2015-06-03 56 views
3

我目前工作的一箇中型reactJS應用,並得到以下錯誤消息後,我點擊一個組件上的一個按鈕:如何調試ReactJS的的setState

Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. 

我怎樣才能更容易調試呢?爲什麼沒有反應?在違反此規則的情況下,我給了一個特定的組件名稱?

你會怎麼做?

+0

我只是在尋找任何使用Ajax或定時器的東西......可能在'componentDidMount'內可以執行內部回調** **之後組件已經被卸載。 – WiredPrairie

回答

3

其實,解決這個問題的最好方法是通過本地更改一些反應代碼。

This pull-request具體指出如何修改src/renderers/shared/reconciler/ReactUpdateQueue.js以獲取非法設置狀態的組件。

由於這個拉動請求已經合併到回購協議中,所以不應該很久才能將其集成到npm版本的反應中,人們可能會希望。

10

當提供的消息與特定模式匹配時,您可以覆蓋console.warn以使其丟棄而不是日誌。在你的情況,你會怎麼做:那麼

var warn = console.warn; 
console.warn = function(warning) { 
    if (/(setState)/.test(warning)) { 
    throw new Error(warning); 
    } 
    warn.apply(console, arguments); 
}; 

錯誤的堆棧跟蹤將指向導致的警告線。

相關問題