我知道有类似的问题,但没有一个帮我修好我的。
所以这是我的问题。
我正在使用react native并使用flux调度程序。发送和注册我的应用程序调度程序工作正常。我的问题是,当我想在调度寄存器函数内更改/设置状态时,我总是得到错误信息,即this.setState()不是函数。当然我认为这必然是一个具有约束力的问题(在es6中写),所以我尝试了各种绑定"这个"但我仍然无法让它发挥作用。有谁知道为什么?
以下是一些不起作用的代码:
testDispatcher() {
AppDispatcher.register( (action) => {
if ( action.action === TEST_ACTION ) {
// I tried setting state inside here
this.setState({
view: action.view
}).bind(this); // with or without this bind doesn't make a difference
// I also tried having a function outside of this function where I set the state.. this doesn't work either.
//this.updateView('home').bind(this);
console.log('dispatch register');
}
});
}
我还试图控制日志"这个"在我的注册功能和"这个"确实返回了我的app类。
答案 0 :(得分:4)
=>
将this
绑定到testDispatcher()
的范围。这可能不是你想要的。在这种情况下,我认为你应该删除=>
符号,而只是一个常规的匿名函数。
此外,this.setState(...args...).bind(this)
完全错误。 1)this.
部分表示.bind(this)
是多余的。 2)绑定的语法如:foo.setState.bind(notFoo, ...args...)
。
答案 1 :(得分:1)
我的课程没有从React Component扩展,因此this.setState不是一个函数。