我一直在阅读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
本质上是“由组件所有者管理的状态”。这就是道具 不可变 的原因。
React
docs还建议将状态视为不可变的。这是因为this.state
直接操作会绕过React的状态管理,这可能会很危险,因为setState()
事后调用可能会替换您所做的
更改 。
我一直在阅读React的快速启动文档; 为什么React道具是只读的?
React文档中说:
在react中,您可以设置进入组件的道具的道具类型。对于我的一个道具,我希望值为null或一行JSX。React文档没有涵盖JSX应该使用的propType。 在测试时,我发现它在使用对象或元素的propTypes时不会抛出错误。当使用另一个符号(如符号)时,我会得到一个错误,表示它是一个对象。如果它是一个对象,当它是一个元素时,它肯定会抱怨。 JSX的正确类型是什么?
本文向大家介绍String 为什 么是不可变的?相关面试题,主要包含被问及String 为什 么是不可变的?时的应答技巧和注意事项,需要的朋友参考一下 简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,`private final char value[]`,所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 Ab
为什么在下面的伪代码示例中,当容器更改foo.bar时,Child没有重新呈现? 即使我在修改容器中的值后调用,Child仍然显示旧值。
有一个问题,为什么他们要求在字典中使用不可变对象作为键。 当我最近使用字典(显然不是为了哈希表)将Xml节点对象作为键放置时,这个问题实际上进入了我的脑海。然后,我在使用过程中多次更新节点。 那么,“使用不可变键”到底意味着什么呢?