this.setState不是一个函数,反应原生

时间:2015-05-25 11:18:20

标签: javascript reactjs ecmascript-6 flux

我知道有类似的问题,但没有一个帮我修好我的。

所以这是我的问题。

我正在使用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类。

2 个答案:

答案 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不是一个函数。