替换 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)
}
我需要在 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)
}