【发布时间】:2018-05-03 09:33:30
【问题描述】:
我正在使用 vuex 和 socket.io 进行 state.Nodes.nodes 更新。我正在更新单个节点(索引 4),当我使用 setInterval 记录时,输出状态和计算属性完全相同(节点 4 输出状态) - 它们在突变后不同!
computed: {
tmpStatus () {
if (this.$store.state.Nodes.nodes.length !== 0) {
return this.$store.state.Nodes.nodes[4].output_state
} else {
return null
}
}
},
created () {
this.debugInterval = setInterval(() => {
console.log('Devicesstate', this.$store.state.Nodes.nodes[4].output_state, this.tmpStatus)
}, 2000)
},
突变是这样完成的:
let nodeFound = state.nodes.filter(item => item.node_id === node.node_id)[0]
let nodeIndex = state.nodes.indexOf(nodeFound)
state.nodes[nodeIndex] = node
更新前的结果(两者相同):
Devicesstate true true
更新后的结果 - 更改为 false(它们不同!):
Devicesstate false true
我已经改变了这样的突变(将 Vue 导入文件):
Vue.set(state.nodes, nodeIndex, node)
而且它有效。
【问题讨论】:
-
您如何更改商店中的值?有certain array modifications Vue 无法检测到。
-
感谢您的建议 - 作品