React觸發(fā)render的實(shí)現(xiàn)方法
React觸發(fā)render方法
1、setState
this.setState({}); 2、forceUpdate
this.forceUpdate();
3、通過狀態(tài)管理
如mobx,redux等
React-forceUpdate()
默認(rèn)情況下,當(dāng)組件的state或props改變時(shí),組件將重新渲染。
如果你的render()方法依賴于一些其他的數(shù)據(jù),你可以告訴React組件需要通過調(diào)用forceUpdate()重新渲染。
調(diào)用forceUpdate()會(huì)導(dǎo)致組件跳過shouldComponentUpdate(),直接調(diào)用render()。
這將觸發(fā)組件的正常生命周期方法,包括每個(gè)子組件的shouldComponentUpdate()方法。
forceUpdate就是重新render。
有些變量不在state上,當(dāng)時(shí)你又想達(dá)到這個(gè)變量更新的時(shí)候,刷新render;或者state里的某個(gè)變量層次太深,更新的時(shí)候沒有自動(dòng)觸發(fā)render。
這些時(shí)候都可以手動(dòng)調(diào)用forceUpdate自動(dòng)觸發(fā)render
Sub.js
class Sub extends React.Component{
construcotr(){
super();
this.name = "yema";
}
refChangeName(name){
this.name = name;
this.forceUpdate();
}
render(){
return (<div>{this.name}</div>);
}
}
App.js
class App extends React.Component{
handleClick(){
this.subRef.refChangeName("yemafuren");
}
render(){
return (<div>
<Sub ref={(sub)=>{this.subRef = sub;}} />
<button onClick={this.handleClick}>click</button>
</div>);
}
} 總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
react-native-webview和h5通信用法及說明
本文詳細(xì)介紹了React?Native和WebView之間的通信方式,包括HTML向RN通信、RN向HTML通信以及使用postMessage進(jìn)行消息通信,通過具體的函數(shù)和代碼示例,展示了如何實(shí)現(xiàn)雙向通信,并提供了一個(gè)在項(xiàng)目中實(shí)際應(yīng)用的調(diào)用示例2026-03-03
React組件中按鈕的loading狀態(tài)失效問題的解決方案
在React開發(fā)過程中,我遇到這樣的情況:頁面按鈕的loading屬性失效,盡管通過useEffect打印發(fā)現(xiàn)loading狀態(tài)(確實(shí)在true和false之間切換,但按鈕卻沒有表現(xiàn)出預(yù)期的加載效果,所以本文給大家介紹了失效的解決方案,需要的朋友可以參考下2025-07-07
React-hook-form-mui基本使用教程(入門篇)
react-hook-form-mui可以幫助開發(fā)人員更輕松地構(gòu)建表單,它結(jié)合了React?Hook?Form和Material-UI組件庫,使用react-hook-form-mui,開發(fā)人員可以更快速地構(gòu)建表單,并且可以輕松地進(jìn)行表單驗(yàn)證和數(shù)據(jù)處理,本文介紹React-hook-form-mui基本使用,感興趣的朋友一起看看吧2024-02-02

