2016-04-27 57 views
3

我知道您可以使用shouldComponentUpdate來決定是否應該調用渲染。引用文檔:如何忽略ReactJs中狀態的屬性更新?

默認情況下,shouldComponentUpdate總是返回true,以防止 微妙的錯誤時,狀態發生突變,但如果你仔細 始終把狀態不可改變的,只從道具和狀態 閱讀在render()中,您可以用 實現替代shouldComponentUpdate,該實現將舊的道具和狀態與 替換進行比較。

但是我的麻煩有點不同。我計算了componentDidUpdate中的一個值,因爲需要第一個渲染器來執行我的計算,並且我想將此值存儲在狀態中以便稍後可以在render函數中使用它,但是我不想當我修改它時觸發渲染。

你會怎麼做?這是正確的路嗎? 我應該在其他地方存儲這個值嗎?直接在this

回答

3

計算組件實際更新之前的狀態。

componentWillUpdate(nextProps, nextState) { 
    nextState.value = nextProps.a + nextProps.b; 
} 

您的組件將獲得其他更改的計算值,並且只會更新一次。

+0

哦!這確實是一個有趣的觸發器!我確實在文檔中看到過它,但只是將其視爲一種生命週期通知點。我會盡力而爲,讓你張貼! thx – Sephy

+1

對我來說,這似乎是一個很好的地方,根據道具重新計算狀態。它就像'getInitialState'。與'getInitialState'不同,它會在每個道具(和狀態)更新時觸發。 – Andreyco

+1

是的,這個伎倆,非常感謝! – Sephy