在开始使用React.js后,似乎道具是静态的(从父组件传入),而状态根据事件发生变化。但是,我在文档中注意到了
componentWillReceiveProps
的引用,其中特别包括此示例:
componentWillReceiveProps: function(nextProps) { this.setState({ likesIncreasing: nextProps.likeCount > this.props.likeCount }); }
这似乎暗示属性可以基于nextProps与this.props的比较而在组件上改变。我缺少什么?道具如何变化,或者我错误地知道这是什么名字?
组件不能更新自己的道具,除非它们是数组或对象(即使可能是组件更新其自己的道具是反模式),但是可以更新其状态和子组件的道具。
例如,仪表板具有处于其状态的速度字段,并将其传递给显示该速度的计量器孩子。它的render方法只是返回< Gauge speed = {this.state.speed} /> ;.当仪表板调用this.setState({speed:this.state.speed 1})时,将使用新的速度值重新渲染计量器。 就在这之前,Gauge的componentWillReceiveProps被调用,因此Gauge有机会将新值与旧值进行比较。