我一直在阅读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道具是只读的?
组件应管理自己的状态,但不应管理自己的道具。props本质上是“由组件所有者管理的状态”。这就是道具 不可变 的原因。
props
React docs还建议将状态视为不可变的。这是因为this.state直接操作会绕过React的状态管理,这可能会很危险,因为setState()事后调用可能会替换您所做的 更改 。
this.state
setState()