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

如何使用 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 关注
  • 266 浏览
慕课专栏
更多

添加回答

举报

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