第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

您可以在不調(diào)用setState的情況下強(qiáng)制React組件重新呈現(xiàn)嗎?

您可以在不調(diào)用setState的情況下強(qiáng)制React組件重新呈現(xiàn)嗎?

紫衣仙女 2019-10-04 15:30:25
我有一個(gè)外部(組件),可觀察的對(duì)象,我想聽這些更改。當(dāng)對(duì)象被更新時(shí),它發(fā)出更改事件,然后我想在檢測(cè)到任何更改時(shí)重新呈現(xiàn)該組件。對(duì)于頂層,React.render這是可能的,但是在組件內(nèi)不起作用(這是有道理的,因?yàn)樵搑ender方法僅返回一個(gè)對(duì)象)。這是一個(gè)代碼示例: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>    )  }}在內(nèi)部單擊該按鈕會(huì)調(diào)用this.render(),但這實(shí)際上并不是導(dǎo)致渲染發(fā)生的原因(您可以看到它在起作用,因?yàn)橛蓜?chuàng)建的文本{Math.random()}不會(huì)更改)。但是,如果我只是打電話this.setState()而不是this.render(),它就可以正常工作。所以我想我的問題是: React組件是否需要具有狀態(tài)才能重新渲染?有沒有一種方法可以在不更改狀態(tài)的情況下強(qiáng)制組件按需更新?
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

實(shí)際上,這forceUpdate()是唯一正確的解決方案,因?yàn)槿绻谄渲谢騼H返回時(shí)實(shí)施了附加邏輯,則setState()可能不會(huì)觸發(fā)重新渲染。shouldComponentUpdate()false


強(qiáng)制性升級(jí)()

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


setState()

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


forceUpdate() 可以從您的組件內(nèi)部通過調(diào)用 this.forceUpdate()


查看完整回答
反對(duì) 回復(fù) 2019-10-04
  • 3 回答
  • 0 關(guān)注
  • 1113 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)