關(guān)于react 父級(jí)組件更新數(shù)據(jù)觸發(fā)子組件更新渲染問(wèn)題

這個(gè)問(wèn)題,困擾了我,特此記錄。

子組件顯示父組件傳來(lái)的props 做更新有 以下2種常用方式:

1.直接使用

class Child extends Component {
    render() {
        return <div>{this.props.someThings}</div>
    }
}

這種方式可以直接在子組件中使用,方便快捷,父組件的更新的數(shù)據(jù)直接影響子組件的值。

2.轉(zhuǎn)換成自己的state

    class Child extends Component {
      constructor(props) {
        super(props);
        this.state = {
          someThings: props.someThings
        };
      }
      componentWillReceiveProps(nextProps) {
        this.setState({someThings: nextProps.someThings});
      }
      render() {
        return <div>{this.state.someThings}</div>
      }
    }

自己在構(gòu)造函數(shù)中初始化一個(gè)值,在將 status 通過(guò) componentWillReceiveProps 生命周期方法 更新

自己喜歡用的是第二種,看起來(lái)易維護(hù),代碼結(jié)構(gòu)清晰

但是,我遇到一個(gè)問(wèn)題,是在渲染第一次是正常的,之后怎么也不做渲染了

后面發(fā)現(xiàn)了,是無(wú)意間使用了 提升react加載性能的 shouldComponentUpdate方法,該方法會(huì)阻止 states 的重新渲染

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 深入JSX date:20170412筆記原文其實(shí)JSX是React.createElement(componen...
    gaoer1938閱讀 8,104評(píng)論 2 35
  • 目前,react組件有三種寫法,分別是es5的createClass寫法,es6的class寫法,以及statel...
    ZoomFunc閱讀 1,837評(píng)論 0 1
  • 原教程內(nèi)容詳見(jiàn)精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過(guò)程中的一些閱讀筆記,個(gè)人覺(jué)得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,860評(píng)論 1 18
  • 選擇深圳,因?yàn)檫@是: 一座締造奇跡、創(chuàng)造傳奇的城市; 一座有著新觀念、新思想、新生活的城市; 一座包容開(kāi)放、海納百...
    好書郎閱讀 1,095評(píng)論 0 2
  • 雷在轟鳴 風(fēng)在耳邊呼嘯 我黑色的發(fā)絲 飛舞成翅膀的形狀 腿在發(fā)抖 我真的跑得好快 夜色覆蓋了我 沉默地?fù)肀е?不...
    在一閱讀 215評(píng)論 0 1