亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您可以在不調用setState的情況下強制React組件重新呈現嗎?

您可以在不調用setState的情況下強制React組件重新呈現嗎?

紫衣仙女 2019-10-04 15:30:25
我有一個外部(組件),可觀察的對象,我想聽這些更改。當對象被更新時,它發出更改事件,然后我想在檢測到任何更改時重新呈現該組件。對于頂層,React.render這是可能的,但是在組件內不起作用(這是有道理的,因為該render方法僅返回一個對象)。這是一個代碼示例:export default class MyComponent extends React.Component {  handleButtonClick() {    this.render();  }  render() {    return (      <div>        {Math.random()}        <button onClick={this.handleButtonClick.bind(this)}>          Click me        </button>      </div>    )  }}在內部單擊該按鈕會調用this.render(),但這實際上并不是導致渲染發生的原因(您可以看到它在起作用,因為由創建的文本{Math.random()}不會更改)。但是,如果我只是打電話this.setState()而不是this.render(),它就可以正常工作。所以我想我的問題是: React組件是否需要具有狀態才能重新渲染?有沒有一種方法可以在不更改狀態的情況下強制組件按需更新?
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

實際上,這forceUpdate()是唯一正確的解決方案,因為如果在其中或僅返回時實施了附加邏輯,則setState()可能不會觸發重新渲染。shouldComponentUpdate()false


強制性升級()

調用forceUpdate()將導致render()在組件上被跳過shouldComponentUpdate()。更多...


setState()

setState()除非在中實現了條件渲染邏輯,否則它將始終觸發重新渲染shouldComponentUpdate()。更多...


forceUpdate() 可以從您的組件內部通過調用 this.forceUpdate()


查看完整回答
反對 回復 2019-10-04
  • 3 回答
  • 0 關注
  • 1116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號