我的組件onload中有多個setState。我的頁面在點擊下拉值時重新呈現,因爲點擊時我通過setState
存儲這些值。Reactjs:使用shouldComponentUpdate()停止重新渲染特定狀態變化
在這裏停止重新呈現點擊,我使用下面的代碼。
shouldComponentUpdate() {
return false
}
現在由於上述功能,我的值不存儲在頁面加載狀態。有什麼我需要做額外的?
我的組件onload中有多個setState。我的頁面在點擊下拉值時重新呈現,因爲點擊時我通過setState
存儲這些值。Reactjs:使用shouldComponentUpdate()停止重新渲染特定狀態變化
在這裏停止重新呈現點擊,我使用下面的代碼。
shouldComponentUpdate() {
return false
}
現在由於上述功能,我的值不存儲在頁面加載狀態。有什麼我需要做額外的?
您必須使用shouldComponentUpdate()
像
shouldComponentUpdate(nextProps, nextState) {
return !Immutable.is(this.state.synergy, nextState.synergy)
}
OP在說什麼關於使用immutable.js或具有名爲'synergy'的屬性? –
夥計們,謝謝你的評論。我解決了這個URL的幫助https://facebook.github.io/react/docs/optimizing-performance.html – B77
@TomFenech:基於答案OP瞭解如何設置true和false,以及BTW OP沒有說什麼,所以我只給他一個例子 –
答案是:你需要重新呈現。這沒有什麼錯。但是,如果您的渲染語句內置了很多邏輯(您不應該這樣做,邏輯應該發生在您的容器中),這可能很麻煩。有效地使用元素鍵,重新呈現沒有任何問題。你正在尋找一種方法來顛覆React的設計模式,當你應該在MOST的情況下進行合規。
由於您已從shouldComponentUpdate
方法返回false
,因此您的狀態不會在您的組件中顯示更改,因爲它完全不會重新調用。
如果你想限制呈現在特定的狀態變化然後就檢查該狀態,並返回否則爲假像
shouldComponentUpdate(nextProps, nextState) {
if(this.state.dropdownVal != nextState.dropdownval) {
return false
}
return true
}
返回true,但它不是一件壞事重新呈現,因爲陣營的渲染過程非常高效而且你希望更經常地在DOM中顯示更新的狀態。
通過總是從'shouldComponentUpdate'返回false來有效地打破你的組件。需要更多信息來了解你想要做什麼。請[edit]爲我們提供[mcve]。 –
如果你總是返回'false',那麼你的組件基本上不會更新。 –