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

JavaScript

村村番长前端

2020-03-10

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

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

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

第527篇《我可以在React.js中更新组件的道具吗?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
神无阳光 2020.03.10

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

梅路易 2020.03.10

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

TonyJinJin泡芙 2020.03.10

道具

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

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

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android