React觸發(fā)render的實現(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改變時,組件將重新渲染。
如果你的render()方法依賴于一些其他的數(shù)據(jù),你可以告訴React組件需要通過調(diào)用forceUpdate()重新渲染。
調(diào)用forceUpdate()會導(dǎo)致組件跳過shouldComponentUpdate(),直接調(diào)用render()。
這將觸發(fā)組件的正常生命周期方法,包括每個子組件的shouldComponentUpdate()方法。
forceUpdate就是重新render。
有些變量不在state上,當(dāng)時你又想達(dá)到這個變量更新的時候,刷新render;或者state里的某個變量層次太深,更新的時候沒有自動觸發(fā)render。
這些時候都可以手動調(diào)用forceUpdate自動觸發(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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中rem布局在react中的應(yīng)用
這篇文章主要介紹了JavaScript中rem布局在react中的應(yīng)用 的相關(guān)資料,需要的朋友可以參考下2015-12-12
React?Server?Component混合式渲染問題詳解
React?官方對?Server?Comopnent?是這樣介紹的:?zero-bundle-size?React?Server?Components,這篇文章主要介紹了React?Server?Component:?混合式渲染,需要的朋友可以參考下2022-12-12
Vite+React搭建開發(fā)構(gòu)建環(huán)境實踐記錄
這篇文章主要介紹了Vite+React搭建開發(fā)構(gòu)建環(huán)境實踐,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09

