在ReactStore方法中绑定范围以使用setState()

时间:2017-09-24 19:22:00

标签: javascript reactjs flux

我正在尝试通过setState()更新StoreState;方法, 我回来了'this.setState()未定义'在我看来 就像一个范围问题。

我正在尝试将范围绑定到函数以从此方法设置Store状态 (参见构造函数或AppDispatcher中),但它没有成功。 所以我想我必须以不同的方式/在其他地方绑定范围?

有人可以帮忙吗?

import AppDispatcher from '../appDispatcher.jsx';
import Events from 'events';
import axios from 'axios';

class FavoritesStore extends EventEmitter {
constructor(props) {
    super(props);
    //doesn't do the trick
    this.updateState = this.updateState.bind(this);

    this.state = {
        importError: 'foo'
    };

}


updateState() {
    console.log('update state called');
    // this line prints this.setState is undefined
    this.setState('importError', 'is-active');
}

}

var favObj = new FavoritesStore();

AppDispatcher.register(function(payload) {
  var action = payload.action;
  switch (action.actionType) {
    case 'UPDATE_ID':
        favObj.updateState(action.data);
        // this does not help it
        // favObj.updateState(action.data).bind(this);

        break;
}

return true;
});

export default favObj;

1 个答案:

答案 0 :(得分:2)

绑定没问题,但EventEmitter是一个节点类而不是反应组件,因此它不会维护状态或使用setState方法。