亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

即使使用刪除運算符后,對象屬性也不會被刪除

即使使用刪除運算符后,對象屬性也不會被刪除

開心每一天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條經驗 獲得超13個贊

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 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號