我可以在React.js中更新组件的道具吗?

在开始使用React.js之后,它似乎props是静态的(从父组件传入),而state基于事件的更改则似乎是静态的但是,我在文档中注意到对的引用componentWillReceiveProps,其中具体包括以下示例:

componentWillReceiveProps: function(nextProps) {
  this.setState({
    likesIncreasing: nextProps.likeCount > this.props.likeCount
  });
}

这似乎意味着,性能可以改变根据的比较组件nextPropsthis.props我想念什么?道具如何变化,还是我误认为它在哪里被调用?

神无阳光2020/03/10 22:37:26

当组件的父对象再次使用不同的属性渲染该组件时,道具可能会更改。我认为这主要是一种优化,因此不需要实例化任何新组件。

梅路易2020/03/10 22:37:26

挂钩已经发生了很多变化,例如componentWillReceiveProps变成了useEffect+ useRef如另一个SO答案所示),但是Props仍然是Read-Only,因此只有调用方方法才应对其进行更新。

TonyJinJin泡芙2020/03/10 22:37:26

道具

React组件应该使用道具来存储可以更改的信息,但是只能由其他组件更改。

React组件应该使用状态来存储组件本身可以更改的信息。

Valéry已经提供了一个很好的例子。