在vuex商店中使用传播算子

时间:2020-06-24 08:53:15

标签: vuex

我从Vuex开始,然后在这个示例中加上Shopping-cart。 在模块购物车(store / modules / cart.js)的操作中,我找到了这段代码

// line 30
// actions
const actions = {
  checkout ({ commit, state }, products) {
    const savedCartItems = [...state.items]
    commit('setCheckoutStatus', null)
    // empty cart
    commit('setCartItems', { items: [] })
    shop.buyProducts(
      products,
      () => commit('setCheckoutStatus', 'successful'),
      () => {
        commit('setCheckoutStatus', 'failed')
        // rollback to the cart saved before sending the request
        commit('setCartItems', { items: savedCartItems })
      }
    )
  },
//....

state.items是我要检出的项目。

我正在询问const savedCartItems = [...state.items]。是否需要使用传播算子?如果我执行const savedCartItems = state.items,则我的应用程序似乎正在运行。我错过了什么吗?

谢谢你,美好的一天

1 个答案:

答案 0 :(得分:0)

与众不同的是,使用散布运算符可以保证您

  • 您最终得到一个数组(如果itemsundefined,则散布运算符不会崩溃。
  • 该数组是一个独立的实例

因此,基本上,这将创建原始数组的浅表副本,在某些情况下可能需要这样做。除此之外,我要说的没有关键区别。