在react中,forceupdate()用來強制讓元件跳過shouldComponentUpdate(),直接呼叫render(),可以觸發元件的正常生命週期方法,語法為「component.forceUpdate(callback)」。
本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
僅當元件的狀態或傳遞給它的道具發生變化時,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中文網其他相關文章!