首页 > 解决方案 > 反应如何使用 setState 有条件地编辑或添加对象数组中的对象

问题描述

我有一个状态subscriptions是一个对象数组。当我收到一条 websocket 消息时,我抓住symbolprice. 有了这些,我想setSubscriptions编辑匹配的对象,symbol === name如果它不存在,添加它。我想出了如何编辑价格(如果存在),但如果不存在,我如何向数组添加新条目?

const [subscriptions, setSubscriptions] = useState([{name: 'xbtusd', price: ''}])


const updateSubscription = (symbol, price) => {
    setSubscriptions((prevSubscriptions) =>
      prevSubscriptions.map((instrument) =>
        instrument.name === symbol
          ? { ...instrument, price: price }
          : instrument
      )
    )  
}

标签: reactjs

解决方案


prevSubscriptions.push(newElement)会做你正在寻找的

您可能会考虑更改数据结构——为什么要使用数组?也许以符号为键的对象(地图)会更容易:

setPrices({[symbol]: price });

推荐阅读