我正在尝试通过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;
答案 0 :(得分:2)
绑定没问题,但EventEmitter
是一个节点类而不是反应组件,因此它不会维护状态或使用setState
方法。