如何从回调函数访问状态

时间:2017-02-02 10:00:20

标签: javascript reactjs react-native ecmascript-6

我有一个反应原生的组件:

export default class Screen extends Component {
  constructor(props){
    super(props);
    this.state = {
      prop1: false,
      prop2: simpleFunc
    };
  }
  simpleFunc = () => { /*...*/ }

  componentWillMount() {
      BackgroundGeolocation.on('location', this.onLocation);

最后一行是将在新位置调用的回调方法 从这种方法,我无法访问this.statethis.simpleFunc()

我应该怎么做才能从回调函数更新状态?

1 个答案:

答案 0 :(得分:3)

要在this内访问onLocation,您需要绑定回调:

  componentWillMount() {
      BackgroundGeolocation.on('location', this.onLocation.bind(this));

或者,您可以使用箭头函数(将使用父级的词法范围):

  componentWillMount() {
      BackgroundGeolocation.on('location', (location) => this.onLocation(location));