首頁  >  文章  >  web前端  >  react中forceupdate的用法是什麼

react中forceupdate的用法是什麼

WBOY
WBOY原創
2022-04-19 12:03:354774瀏覽

在react中,forceupdate()用來強制讓元件跳過shouldComponentUpdate(),直接呼叫render(),可以觸發元件的正常生命週期方法,語法為「component.forceUpdate(callback)」。

react中forceupdate的用法是什麼

本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。

react中forceupdate的用法是什麼

僅當元件的狀態或傳遞給它的道具發生變化時,React中的元件才會re-render,但如果某些資料發生變化,如果我們需要更改元件的re-render,我們將使用React的forceUpdate()方法。呼叫forceUpdate()將強制元件re-render,從而跳過該shouldComponentUpdate()方法而呼叫該元件的render()方法。

提示:通常,避免使用forceUpdate(),而只能從render()中的this.props和this.state中讀取。

用法:

component.forceUpdate(callback)

雖然確實有一些使用forceUpdate()方法的用例,但最好在需要時使用掛鉤,道具,狀態和上下文來對元件進行re-render處理。

預設情況下,當元件的state或props改變時,元件將重新渲染。如果你的render()方法依賴一些其他的數據,你可以告訴React元件需要透過呼叫forceUpdate()重新渲染。

呼叫forceUpdate()會導致元件跳過shouldComponentUpdate(),直接呼叫render()。這將觸發組件的正常生命週期方法,包括每個子組件的shouldComponentUpdate()方法。

forceUpdate就是重新render。有些變數不在state上,當時你又想達到這個變數更新的時候,刷新render;或是state裡的某個變數層次太深,更新的時候沒有自動觸發render。這些時候都可以手動呼叫forceUpdate自動觸發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>);
    }
}

推薦學習:《react影片教學

以上是react中forceupdate的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn