为了账号安全,请及时绑定邮箱和手机立即绑定

React:无法添加属性“ X”,对象不可扩展

React:无法添加属性“ X”,对象不可扩展

吃鸡游戏 2021-04-21 10:09:16
我正在组件中接收道具。我想在此组件中添加带有道具的属性“ LegendPosition”。我无法做到这一点。请帮我解决一下这个。我已经尝试过此代码,但没有成功:var tempProps     = this.props;tempProps.legendPosition = 'right';Object.preventExtensions(tempProps);console.log(tempProps);
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您无法修改this.props。这里tempProps是参考,this.props因此它不起作用。您应该创建propsusingJSON.parse()和的副本JSON.stringify()


var tempProps = JSON.parse(JSON.stringify(this.props));

tempProps.legendPosition = 'right';

Object.preventExtensions(tempProps);


console.log(tempProps);


查看完整回答
反对 回复 2021-04-22
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

我想将更新的道具发送给子组件,如果可以不复制或克隆到新对象,请帮助我如何实现这一目标。


解决方案很简单:


<ChildComponent {...this.props} legendPosition="right" />

当然legendPosition可以在中ChildComponent使用this.props.legendPosition。


当然,早期this.props可含有已经legendPosition属性/值,这将是覆盖被后来的定义-为了事宜。


当然,可以有许多散布运算符-对于多个属性,逻辑块……无论如何:


const additonalProps = {

  legendPosition: 'right',

  sthElse: true

}

return (

  <ChildComponent {...this.props} {...additonalProps} />

)



查看完整回答
反对 回复 2021-04-22
  • 3 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信