javascript - 排序数组时如何正确使用getter
问题描述
所以我在使用 vuex getter 时遇到了问题。
我的目标是使用 gettercart
对作为对象数组的数据进行排序date
myCartItems
{prod_id: 2, date: Wed Nov 03 2021 10:40:20}
我的问题是,在我的组件中推送第二个有效负载后Details
,props['prod_id'] 正在记录prod_id: 1
而不是prod_id: 2
突变
addToCart: (state, payload) => {
state.cart.push(payload) // payload = {prod_id: 1, date: Wed Nov 03 2021 10:37:26}
}
吸气剂
cartItems: (state) => {
return state.cart.slice().sort(
(a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()
);
},
html
<div v-for="(item,index) in cartItems" :key="index">
<Details :id="item.prod_id" />
</div>
解决方案
使用索引key
是您的问题,因为索引永远不会根据排序顺序而改变。
最佳做法是使用唯一标识符,例如prod_id
<div v-for="item in cartItems" :key="item.prod_id">
<Details :id="item.prod_id" />
</div>
推荐阅读
- macos - Mac OS X:如何在 emacs 客户端的 shell 中永久更改提示符(PS1 的值)?
- android-studio - 检查失败:Thread::Current() != GetDebugThread() (Thread::Current()=0x7f7f241e00, GetDebugThread()=0x7f7f241e00) 预期事件线程
- outlook - 在 EWS 中创建不属于对话的新电子邮件
- python-3.x - 为什么我们在 python 参考中使用空括号从头开始书籍数据科学?
- python - 与docker内部python后端的节点通信中的角度失败
- python - Python NET 初始化一个锯齿状数组
- eclipse - Linux 上的 Eclipse Oxygen 重启后未启动
- ios - 如何在毫秒的视频中获取帧
- android - Android 构建在 Mac 机器中失败
- swift - 在主线程中调用方法会影响其子方法