reactjs - 反应如何使用 setState 有条件地编辑或添加对象数组中的对象
问题描述
我有一个状态subscriptions
是一个对象数组。当我收到一条 websocket 消息时,我抓住symbol
并price
. 有了这些,我想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
)
)
}
解决方案
prevSubscriptions.push(newElement)
会做你正在寻找的
您可能会考虑更改数据结构——为什么要使用数组?也许以符号为键的对象(地图)会更容易:
setPrices({[symbol]: price });
推荐阅读
- font-awesome - 为什么我有水瓶而不是字体真棒图标?
- javascript - 如何在 JavaScript 中正确使用 Promise.then()?
- c# - 如何从数据列表更新数据库表?
- python - 使用 Python 比较两个不同的 csv 列时无法获取缺失的元素
- android - 无法从资产中复制预先创建的数据库
- c++ - C++ 翻译单元
- javascript - 如何解析格式化的日期文本以便在 javascript 中有 Date 对象
- create-react-app - 使用 create-react-app 2.0 将 scss 加载到字符串变量中而不弹出
- python-3.x - 为什么 create_all 函数不创建我的表?
- ruby-on-rails - 我安装了 Ruby on Rails,但安装 SQLite3 时遇到问题。视窗 10