鍍金池/ 問答/HTML5  HTML/ react 定義變量的問題

react 定義變量的問題

在this.state 定義的變量如果改變會重新render
如果不想讓他render 只是改變值怎么寫 需要寫在組件外面么

回答
編輯回答
傲嬌范

react的 生命周期中 有一個 shouldComponent Update 你在這個生命周期函數(shù)中判斷 this.state 中的值 和 前一次的值 不同時 返回 false 就能夠阻止 react 再次 render

2018年4月25日 19:15
編輯回答
久礙你

state改變是會觸發(fā)re-render的,你這樣的需求變量最好別存state。
shouldComponentUpdate()可以在state改變不去render

2017年4月12日 05:49
編輯回答
悶騷型

一般來說不用 this.state 直接掛著 this 上就行。但有時候必須掛一些跟渲染無關(guān)的數(shù)據(jù)在 state 上,比如用到 getDerivedStateFromProps ,這時可以小 hack 在 state 上開辟一個 mutableArea 對象專門用來掛變量。直接修改這個對象的屬性不改變它本身,所以不會影響渲染。比實現(xiàn) shouldComponentUpdate 方便些。

2017年4月9日 03:42
編輯回答
護她命

改變this.state 頁面便會重新渲染。若不想重新渲染,可以將this.state.變量 改成 this.變量做操作;或者是樓上所說,通過shouldComponentUpdate 生命周期強行阻止其渲染。

2018年8月26日 10:23
編輯回答
賤人曾

這個只能在周期里面去限制了,state 執(zhí)行this.setState 就會執(zhí)行render方法,如果不想話,可以考慮上述說的在周期里面判斷不需要render的條件,shouldComponentUpdate 必須有返回值,不然也會報錯,return true 執(zhí)行render false不執(zhí)行render。如果覺得麻煩的話可以考慮react 16版本發(fā)的命名組件的新的方法,
class Box extends React.PureComponent 他能做一些簡單的淺比較。

2018年7月11日 01:48
編輯回答
薔薇花

通過shouldComponentUpdate()是可以達到你的需求。
改變state就是為了render的。你這需求很是奇特。

2017年7月24日 19:56