替换 Vuex Nuxt 中的数组项

Replace array item in Vuex Nuxt

我需要在 vuex nuxtjs 中通过索引替换一些数组项:

changeTicket(state, value) {
    // 1 - Vue.set(state.tickets, value.index, value.numbers)
    // 2 - state.tickets[value.index] = value.numbers
}

我正在尝试 2 个变体,第一个我有一个错误 = [vuex] do not mutate vuex store state outside mutation handlers.,第二个我失去了反应性。

在组件中,我在点击后发送新数组:

setNumber(num) {
  const vResult = this.numbers;

  if(vResult.includes(num)) {
    vResult.splice(vResult.indexOf(num), 1)
  } else {
    if(vResult.length >= this.options[this.game].max) return;
    vResult.push(num)
  }

  this.$nextTick(() => {
    this.$store.commit("games/changeTicket", {
      numbers: vResult,
      index: this.index
    })
  })
},

数组示例:

[
  [1,2,3,4,5],
  [2,5,61,21],
  ...
]

我猜 changeTicket 真的是 Vuex 突变,对吧?否则,这就是您收到 Vuex 警告的原因。

在突变中,只需在数组中使用 splice

changeTicket(state, { index, numbers }) {
  state.tickets.splice(index, 1, numbers)
}