我的React-native逻辑实际上存在问题,我需要您的宝贵帮助!
我有我的主要组件'Main.js',我想从'Function.js'导入一个函数,该函数应该更改'Main.js'的状态...
但是我当然无法访问“ Main.js”的 this 。 所以我的问题是:
如何从Function.js中导出的函数更改Main.js状态?
这是Function.js中的那种代码
_function = () => {
... Getting MyState in AsyncStorage ...
var MyState = ...;
this.setState({ User: MyState })
}
还有我的Main.js
import { _function } from 'Function.js'
...
componentDidMount(){
this._function()
}
...
答案 0 :(得分:1)
使实例成为函数的参数:
export const _function = (main) => {
// ... Getting MyState in AsyncStorage ...
var MyState = …
main.setState({ User: MyState })
};
import { _function } from 'Function.js'
…
componentDidMount(){
_function(this)
}
…
或者不要使用箭头功能,以便可以将其实际用作方法:
export function _function() {
// ... Getting MyState in AsyncStorage ...
var MyState = …
this.setState({ User: MyState })
};
import { _function } from 'Function.js'
…
componentDidMount(){
_function.call(this)
}
…
您甚至可以将其安装为真实方法:
import { _function } from 'Function.js'
class Main {
componentDidMount(){
this.method();
}
}
Main.prototype.method = _function;
答案 1 :(得分:0)
您可以在_function
参数中传递一个函数。
在main.js中,您将有一个函数
setUser = (User) => {
this.setState({user});
}
然后您调用_function
并传递setUser
作为参数。
componentDidMount(){
_function(this.setUser)
}
在Function.js中,您可以编辑函数以接收该函数并调用它。
_function = (setUser) => {
... Getting MyState in AsyncStorage ...
var MyState = ...;
setUser(MyState);
}