rat*_*kin 11 properties reactjs
我一直在阅读React的快速入门文档;
无论是将组件声明为函数还是类,它都不能修改自己的道具
这是一个"纯"函数,因为它不会尝试更改其输入,并且始终为相同的输入返回相同的结果:
function sum(a, b) {
return a + b;
}
Run Code Online (Sandbox Code Playgroud)
这是一个"不纯"的功能,因为它改变了自己的输入: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>;
}
Run Code Online (Sandbox Code Playgroud)
为什么React道具是只读的?
Shu*_*tri 19
组件应该管理自己的状态,但它不应该管理自己的道具.props
本质上是"由组件所有者管理的状态".这就是道具不可改变的原因.
React docs还建议将状态视为不可变.这是因为通过this.state
直接操作,你正在绕过React的状态管理,这可能是有潜在危险的,因为setState()
之后的调用可能会取代你所做的突变.
您可能认为React组件是其props
和的函数state
。在阅读文档时,您会发现情况确实如此,因为React组件生命周期中的大多数函数都具有form的签名(prop, state) => { //code }
。
React docs定义props
为提供给组件的任意输入,并且组件将基于渲染某些东西props
(state
如果是有状态组件,则有时也基于渲染)。所以,props
就是这样被赋予了发言权组件,参考的东西。试想一下:您是一个组件,父组件为您提供了一本参考书,其中包含一些有关行为方式的规则(也称为render)。可能出现两种情况:
无论哪种方式,您都不能更新提供给您的参考书。只有父组件可以对其进行更新(例如,给您另一本书或更改其内容)。
我不知道这是否是正确的表示形式,但是React组件以类似的方式工作。您很快就会掌握它。确保您也阅读了React中的《思考》。编码愉快!
归档时间: |
|
查看次数: |
7195 次 |
最近记录: |