小编典典

为什么React道具是不可变的?

reactjs

我一直在阅读React的快速入门文档。

无论您将组件声明为函数还是类,都不得修改其自身的道具

这是一个“纯”函数,因为它不尝试更改其输入,并且对于相同的输入始终返回相同的结果:

function sum(a, b) {
  return a + b;
}

这是“不纯”函数,因为它更改了自己的输入:https :
//codesandbox.io/s/9z38xv4x7r

function SayHi(props) {
  props.name = "Jim"; // TypeError Cannot assign to read only property 'name' of object '#<Object>'
  return <h1>Hi {props.name}!</h1>;
}

为什么React道具是只读的?


阅读 285

收藏
2020-07-22

共1个答案

小编典典

组件应管理自己的状态,但不应管理自己的道具。props本质上是“由组件所有者管理的状态”。这就是道具 不可变 的原因。

React
docs还建议将状态视为不可变的。这是因为this.state直接操作会绕过React的状态管理,这可能会很危险,因为setState()事后调用可能会替换您所做的
更改

2020-07-22