我在 state.allItems 中有一系列产品。(每个产品都有 ID、标题等)我想通过按钮更改有关元素的信息。我发送产品的 ID。
认为我在突变中做错了什么。行动:
UPDATE_PRODUCT({commit}, id){ const token = localStorage.getItem('token'); return axios.request({ url: '`{url}`', method: 'put', data: {id:id}, headers: { Authorization: `Bearer ${token}` } }) .then((resp)=>{ commit('UPDATE_PRODUCT_IN_STATE', resp) alert('Товар успешно изменен!') console.log(resp) return resp; }) .catch((error)=>{ console.log(error) return error; }) },
突变:
UPDATE_PRODUCT_IN_STATE: (state, id)=>{ state.allItems = state.allItems.map(i=>i.id===id) },
要知道您尝试实现的目标并不容易,但在这里:
我猜您的 map 方法将返回一个如下所示的数组:[false, false, true, false...] 这是因为state.allItems.map(i => i.id === id)将比较其中的每个项目state.allItems并返回true或者false基于当前项目是否与作为参数发送的id匹配。id
[false, false, true, false...]
state.allItems.map(i => i.id === id)
state.allItems
true
false
id