2017-06-13 135 views
-1

我的組件onload中有多個setState。我的頁面在點擊下拉值時重新呈現,因爲點擊時我通過setState存儲這些值。Reactjs:使用shouldComponentUpdate()停止重新渲染特定狀態變化

在這裏停止重新呈現點擊,我使用下面的代碼。

shouldComponentUpdate() { 
    return false 
} 

現在由於上述功能,我的值不存儲在頁面加載狀態。有什麼我需要做額外的?

+0

通過總是從'shouldComponentUpdate'返回false來有效地打破你的組件。需要更多信息來了解你想要做什麼。請[edit]爲我們提供[mcve]。 –

+0

如果你總是返回'false',那麼你的組件基本上不會更新。 –

回答

-1

您必須使用shouldComponentUpdate()

shouldComponentUpdate(nextProps, nextState) { 
    return !Immutable.is(this.state.synergy, nextState.synergy) 
} 
+0

OP在說什麼關於使用immutable.js或具有名爲'synergy'的屬性? –

+0

夥計們,謝謝你的評論。我解決了這個URL的幫助https://facebook.github.io/react/docs/optimizing-performance.html – B77

+0

@TomFenech:基於答案OP瞭解如何設置true和false,以及BTW OP沒有說什麼,所以我只給他一個例子 –

0

答案是:你需要重新呈現。這沒有什麼錯。但是,如果您的渲染語句內置了很多邏輯(您不應該這樣做,邏輯應該發生在您的容器中),這可能很麻煩。有效地使用元素鍵,重新呈現沒有任何問題。你正在尋找一種方法來顛覆React的設計模式,當你應該在MOST的情況下進行合規。

1

由於您已從shouldComponentUpdate方法返回false,因此您的狀態不會在您的組件中顯示更改,因爲它完全不會重新調用。

如果你想限制呈現在特定的狀態變化然後就檢查該狀態,並返回否則爲假像

shouldComponentUpdate(nextProps, nextState) { 
    if(this.state.dropdownVal != nextState.dropdownval) { 
      return false 
    } 
    return true 
} 

返回true,但它不是一件壞事重新呈現,因爲陣營的渲染過程非常高效而且你希望更經常地在DOM中顯示更新的狀態。