因为从后端获取到购物车数据只有商品id,所以商品信息还得通过action 异步获取,那么问题出现了,
// 获得购物车
[GET_CART] ({ dispatch, commit }) {
return new Promise((resolve, reject) => {
api.apiObj.cart.get()
.then((res) => {
if (res.status) {
let data = res.data
commit('SET_CART', data)
// resolve(data)
data.forEach((item) => {
dispatch('GET_GOODS', item)
})
} else {
Message.error(res.msg)
}
})
})
},
// 获得商品信息
[GET_GOODS] ({ commit }, data) {
debugger
api.apiObj.getPro.get({
id: data.id
}).then((res) => {
if (res.status) {
console.log(res.data[0])
// 这里打印没问题 2个不同的商品信息
commit('SET_GOODS', res.data[0])
}
})
}
[SET_GOODS] (state, data) {
//问题就在这里 传过来的商品信息是全最后一个,也就是都是id为3的商品信息,我知道这是异步造成的,但是该怎么解决呢
state.cart.forEach((item, i) => {
// debugger
if (item.id === data.id) {
state.cart[i].goods = data
}
})
}
所以最后结果只有id为3的商品信息放进去了
state.cart[i].goods如果是数组,可以通过push,你那样做只能保存最后一组数据。