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

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

如何使用 React 為在狀態中初始化的 Map 添加值?

如何使用 React 為在狀態中初始化的 Map 添加值?

鳳凰求蠱 2023-06-09 17:41:55
我有應用程序,我需要保留搜索歷史記錄,我認為Map這里很合適:const [searchHistory, setSearchHistory] = useState(new Map());更新它使用setSearchHistory(new Map([[text, result.repos]]));但它用新地圖替換地圖,你能告訴我如何為狀態初始化的地圖添加值嗎?
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

返回的狀態更新器函數不會像基于類的組件那樣useState合并狀態。this.setState()在功能組件中,您必須手動將舊狀態與新狀態合并。


您正在將新Map對象傳遞給setSearchHistory,因此它將完全覆蓋舊狀態。


Map您可以通過首先將舊對象中的條目復制到新對象中來更新狀態Map,然后在狀態中添加要添加的新條目。最后,將這個新Map對象傳遞給setSearchHistory.


// copy (shallow) the old map's entries in the new Map

const updatedMap = new Map(searchHistory);  

// add the new entry in the 'updatedMap'

updatedMap.set(key, value);

// update the state

setSearchHistory(updatedMap);


查看完整回答
反對 回復 2023-06-09
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

您可以像下面這樣實現:


const [searchHistory, setSearchHistory] = useState(new Map());


function onChange(key, value) {

  // change the searchHistory map with a new Map from the current searchHistory, and the new key, value

  setSearchHistory(new Map([...searchHistory, [key, value]]));

}


查看完整回答
反對 回復 2023-06-09
  • 2 回答
  • 0 關注
  • 458 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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