父控件仅更新state导致子控件触发componentWillReceiveProps

//Parent.js
class Parent extends React.Component {
    constructor() {
        super();
        this.state = {
            name: 'zhangsan'
        }
    }

    test() {
        this.setState({
            name: 'lisi'
        })
    }

    render() {
        return (
            <div>
                <button onClick={this.test.bind(this)}>gogo</button>                
                <Sub1 />
            </div>
        )
    }
}

export default Parent
//Sub1.js
class Sub1 extends React.Component {
    componentWillReceiveProps(nextProps) {        
        console.log('componentWillReceiveProps from sub1')
    }

    render() {
        return <div>Sub1x</div>
    }
}

export default Sub1

Parent中加载Sub1时未设置props。
点击按钮时,Parent中的state发生了变化,导致了Sub1中触发了componentWillReceiveProps事件,这个合理吗??

阅读 2.8k
1 个回答

Edit 5v5x97lo7l
看了下确实是这样的,是因为父组件的state变化,父组件有更新,但是子组件没有没有引用任何属性的情况下也更新了,确实不是很合理,虽然最后dom diff之后不会有任何变化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题