首页 > 解决方案 > 反应:无法添加属性'X',对象不可扩展

问题描述

我在我的组件中接收道具。我想用这个组件中的道具添加一个属性“LegendPosition”。我无法做到这一点。请帮我解决一下这个。我已经尝试过这段代码但没有成功:

var tempProps     = this.props;
tempProps.legendPosition = 'right';
Object.preventExtensions(tempProps);

console.log(tempProps);

标签: javascriptreactjsobject

解决方案


你不能修改this.props. 这tempProps是参考,this.props所以它不起作用。props您应该创建使用的副本JSON.parse()JSON.stringify()

var tempProps = JSON.parse(JSON.stringify(this.props));
tempProps.legendPosition = 'right';
Object.preventExtensions(tempProps);

console.log(tempProps);

有关深度克隆对象的更好和更有效的方法,请参阅在 JavaScript 中深度克隆对象的最有效方法是什么?


推荐阅读