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()會導(dǎo)致組件跳過shouldComponentUpdate(),直接調(diào)用render()。
這將觸發(fā)組件的正常生命周期方法,包括每個(gè)子組件的shouldComponentUpdate()方法。
forceUpdate就是重新render。
有些變量不在state上,當(dāng)時(shí)你又想達(dá)到這個(gè)變量更新的時(shí)候,刷新render;或者state里的某個(gè)變量層次太深,更新的時(shí)候沒有自動觸發(fā)render。
這些時(shí)候都可以手動調(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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React中進(jìn)行條件渲染的實(shí)現(xiàn)方法
React是一種流行的JavaScript庫,它被廣泛應(yīng)用于構(gòu)建Web應(yīng)用程序,在React中,條件渲染是一個(gè)非常重要的概念,它允許我們根據(jù)不同的條件來呈現(xiàn)不同的內(nèi)容,在本文中,我們將探討React如何進(jìn)行條件渲染,需要的朋友可以參考下2023-11-11
React導(dǎo)入less及其注意事項(xiàng)說明
在Vite構(gòu)建的React項(xiàng)目中,直接安裝和導(dǎo)入Less即可使用,但需注意的是,Less的樣式作用域不局限于模塊內(nèi)部,可能造成樣式污染,建議通過修改文件名和導(dǎo)入方式來避免此問題2024-11-11
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)境實(shí)踐記錄
這篇文章主要介紹了Vite+React搭建開發(fā)構(gòu)建環(huán)境實(shí)踐,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
ahooks控制時(shí)機(jī)的hook實(shí)現(xiàn)方法
這篇文章主要為大家介紹了ahooks控制時(shí)機(jī)的hook實(shí)現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

