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

即使使用删除运算符后,对象属性也不会被删除

即使使用删除运算符后,对象属性也不会被删除

开心每一天1111 2023-07-20 10:44:12
我有一系列对象。我想id从中删除一个名为 as 的键。我已使用以下代码将其从对象中删除。this.state.result.forEach(item => delete item.id);但 id 仍然没有被删除。我不确定我的代码为什么以及有什么问题。我尝试使用上述逻辑从同一对象中删除几个其他键,效果很好。我面临的唯一问题是id。我认为这个对象属性是不可配置的。如果是这样的话,我们该如何删除呢。有人可以帮我解决这个问题吗?提前致谢。
查看完整描述

5 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

也许idnon-configurable,那么你就无法删除它。 请注意,aTypeError仅在严格模式下抛出。



查看完整回答
反对 回复 2023-07-20
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

**

如果您使用react,那么您应该始终使用setState 来更改状态。

**

    this.setState({ // calling setState for updating the state

       result: this.state.result.map(item => {

           let tmpItem = {...item};// storing all the value here in tmpItem

           delete tmpItem.id; // deleting the key

           return {...tmpItem}; // returning here

       })

    }, ()=> {

        // for immediatly accessing the state you can use callback

    });


查看完整回答
反对 回复 2023-07-20
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

state在计算下一个状态时,您不应该依赖:s 值,因为它可能会由 React 在幕后异步更新。


另外,请尽量避免,delete因为它是性能杀手。


所以试试这个:


this.setState((state, props) => ({

  result: state.result.map(({id, ...propsToKeep}) => propsToKeep)

}));

或者如果你必须使用delete:


this.setState((state, props) => ({

  result: state.result.map(res => { 

    delete res.id; 

    return res; 

  });

}));


查看完整回答
反对 回复 2023-07-20
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

在 React 中,您无法直接更新state. 你总是必须使用setState方法来做到这一点。


所以试试这个。


this.setState({

 result: this.state.result.map(item => {

  let tmpItem = {...item};

  delete tmpItem.id;

  return {...tmpItem}; 

 })

});

谢谢!


查看完整回答
反对 回复 2023-07-20
?
智慧大石

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

在 React.js 中,你永远不应该尝试直接改变状态。您必须使用 setState() 才能获得结果。id 没有被删除,因为没有发生重新渲染。

从文档中,

不要直接修改状态

// Wrong
this.state.comment = 'Hello';

相反,使用 setState():

// Correct
this.setState({comment: 'Hello'});


查看完整回答
反对 回复 2023-07-20
  • 5 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

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