一尘不染

如何更新数组的元素?

javascript

我在 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)
},

阅读 90

收藏
2022-07-26

共1个答案

一尘不染

要知道您尝试实现的目标并不容易,但在这里:

我猜您的 map 方法将返回一个如下所示的数组:[false, false, true, false...] 这是因为state.allItems.map(i => i.id === id)将比较其中的每个项目state.allItems并返回true或者false基于当前项目是否与作为参数发送的id匹配。id

2022-07-26