react中父元件state改變,子元件重新整理
阿新 • • 發佈:2022-05-31
1.在react專案開發中,難免會遇到在父元件中state之改變,子元件也會有資料改變,
如果對react有一定了解,都知道react中的有props和state
- props:從元件外傳到元件內的值,只能讀取,不能修改
- state:是元件內建物件,可以修改其屬性值,並且是動態修改,元件會根據state的值變化而重新整理元件變化的部分.
因此問題出現了,現在的使用場景是在父元件中state改變了,父元件的實現區域性重新整理,子元件卻沒有絲毫改變,這種情況
就是父元件render初始化的時候子元件子元件也初始化,父元件中state改變,父元件實現重新整理,父元件傳入子元件中的props
也改變了,但是子元件中的state值並沒有改變,所以子元件並沒有重新整理。
問題找到了,問題就好解決了,在這裡react在元件中提供了一個監聽props改變的方法 componentWillReceiveProps(nextProps: IProps) {}
,也就是props改變,這個方法就會執行一次, nextProps 就是父元件中傳來的引數,我們可以把我們需要動態改變的資料賦值到state物件中,
這樣就可以props改變了。componentWillReceiveProps(nextProps: IProps) {} 立刻監聽到,後把state中的值修改,state修改後元件也會隨之重新整理
2.下面是測試程式碼
- 父元件中的程式碼
<Header back={'商品列表'} backArrow={true} children="上傳商品" rightClick={this.save} right={ this.state.updateState === updateState.update ? '儲存' : this.state.updateState === updateState.info && this
- 子元件中的程式碼
componentWillReceiveProps(nextProps: IProps) { console.log('進來了', nextProps.right) this.setState({ right: nextProps.right }) }
- 注意事項,在class子元件中需要動態改變的資料需要把state中的值放到放入到render()中
由於研究react框架不久,有許多不足之處,如有大佬路過,希望留言指正一下,謝謝