React-native:使用其他组件中的“ this”导出功能

时间:2018-09-04 16:19:13

标签: javascript react-native

我的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()
}
...

2 个答案:

答案 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);
}