我的 vuex 商店中有一个名为 case 的数组。
当我更新数组中现有项目中的几个字段时,我想用新内容更新数组。
我以为我可以在我的突变中做这样的事情,但不起作用并得到错误 typeError: undefined is not an object (evaluating 'state.objects.find')
EDIT_CASE (state, payload) {
const item = state.objects.find(item => item.id === payload.recordId);
Object.assign(item, payload.case_status);
我的数组如下:
[
{
"case_name": "Laptop not working",
"case_status": "live",
"case_summary": "This is some summary content",
"createdBy": "zippy",
"createdDate": "2018-06-21T15:20:22.932Z",
"id": "-LFXvk9yY5c-O8yIdf8k"
},
{
"case_name": "Something else",
"case_status": "live",
"case_summary": "This is some summary content",
"createdBy": "zippy",
"createdDate": "2018-06-21T15:20:22.932Z",
"id": "-STVvk9yY5c-O3yiTy8k"
}
]
我还认为,从我读过的内容来看,Vue 没有观察到数组内的变化,所以我可能完全走错了路,需要删除然后重新添加数组项?
基本上我有一个列表,我对后端进行了更改,现在我希望该列表反映我通过更新案例状态所做的更改,有人可以帮忙吗?
原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的示例没有数组问题,因为您尝试更改对象属性 - 而不是数组元素 _引用_。问题出在
Object.assign(item, payload.case_status);
你应该提供一个对象而不仅仅是一个字段。 (你也说过那个数组叫做cases
但是例子有objects
,也许这也是问题);所以这应该工作:
错误:
我认为,它与
Object.assign
有关,因为您将字段传递给它可能是 未定义 的。PS 有一个小例子可以帮助您了解何时出现阵列问题以及何时一切正常。见代码注释:)