gpt4 book ai didi

reactjs - react : Why are props not frozen?

转载 作者:行者123 更新时间:2023-12-03 14:28:29 26 4
gpt4 key购买 nike

React 建议不要改变 props。我的印象是,当传入 props 时,它们将是不可变的或卡住的。

下面的代码不会抛出任何错误并改变 prop。这是一个错误吗?

try{
var a = this.props.a;
a.push('one')
a.push('two')
a.push('three')
console.log(a)
}catch(err){
console.log(err)
}

最佳答案

我不确定其背后的确切原因,或者是否有记录在某处,但我可以猜测:

除了使用新的甚至尚未实现的浏览器功能之外,卡住对变量的任何分配并不容易,甚至不一定是可能的。此外,深度卡住应用程序中的所有 Prop 可能会对性能产生影响,并且肯定需要在产品构建中删除。

你能卡住原始变量的赋值吗?我不这么认为。我认为 babel 通过在编译时静态检查代码来使用 const 来实现这一点。

你可以在没有 Object.freeze 或 ES7 代理的情况下卡住对象吗?我再次不这么认为,es5-shim自述文件说:

which you cannot possibly obtain in legacy engines

如果有人确实改变了某些东西怎么办?这些 Prop 是浅复制的,这意味着除非您修改嵌套对象,否则您不会影响父 Prop 。但是,即使您这样做也不会影响应用程序,因为它会在下一次渲染时被消除(就像您的修改一样)。

如果我有什么问题请告诉我!这只是我的推理。

关于reactjs - react : Why are props not frozen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41641254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com