我知道有類似的問題,但他們都沒有幫助我修復我的。this.setState不是一個函數,反應原生
所以這是我的問題。
我正在與本機反應並使用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');
}
});
}
我也試圖控制檯登錄「本」我的註冊函數中和「這個」不回我的應用程序類。
嗨,謝謝你的回覆。但是我不想將它綁定到我的testDispatcher函數中的AppDispatcher函數?如果我不這樣做,我最終會將調度程序的對象放在那裏,然後我也不能使用this.setState。這很奇怪,因爲當我使用箭頭函數並記錄「this」時,我得到了我的類,這是我想要的,但它仍然不會讓我使用this.setState。 – alexjson
我解決了!我沒有從我的類中的React Component擴展,因此setState不是一個函數..哦,男孩..對不起,我應該發佈更多的代碼,然後這會更明顯。 – alexjson