如何在NGXS中每次将新元素插入items数组的首个索引位置?
在NGXS中实现数组头部插入元素的解决方案
要实现将新元素插入到BasketStateModel的items数组首个索引位置(类似unshift的效果),只需要调整你在setState里数组展开的顺序就可以了,具体修改如下:
原来的代码是把新元素追加到数组末尾:
setState({ items: [...state.items, payload], basketSize: state.items.length + 1 });
我们只需要把payload放在扩展运算符的前面,这样新元素就会成为数组的第一个元素,原数组的元素依次跟在后面:
// 修改后的 setState 代码 const state = getState(); setState({ items: [payload, ...state.items], // 把新元素放在最前面 basketSize: state.items.length + 1 });
举个例子验证:
- 原数组:
[{'aa':val},{'bb':val}] - 插入
{'cc':val}后,新数组就会变成:[{'cc':val}, {'aa':val},{'bb':val}],完全符合你的需求。
另外,basketSize的计算是正确的,因为原数组长度加1正好对应插入新元素后的数组长度。
内容的提问来源于stack exchange,提问作者Jeya Sekar
相关产品推荐
相关产品推荐

