2017-11-20 6 views
0

state.Nodes.nodes 업데이트에 대해 vuex 및 socket.io를 사용하고 있습니다. 단일 노드 (인덱스 4)를 업데이트 할 때 setInterval을 사용하여 로깅 할 때 output_state와 정확히 동일한 (노드 4 output_state) 속성이 있습니다. 갱신 전에vuex 계산 된 속성이있는 vue가 업데이트되지 않습니다.

let nodeFound = state.nodes.filter(item => item.node_id === node.node_id)[0] 
let nodeIndex = state.nodes.indexOf(nodeFound) 
state.nodes[nodeIndex] = node 

결과 (모두 동일) :

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) 
}, 

돌연변이 그런 식으로 이루어집니다 - (!가 다를 수) 업데이트 후 Devicesstate true true

결과 false로 변경을 : Devicesstate false true

나는 (돌연변이를 파일로 가져 오기) :

Vue.set(state.nodes, nodeIndex, node) 

그리고 작동합니다.

+2

어떻게 가게의 가치를 바꾸고 있습니까? Vue가 감지 할 수없는 [특정 어레이 수정] (https://vuejs.org/v2/guide/list.html#Caveats)이 있습니다. –

+0

제안 해 주셔서 감사합니다. –

답변

0

나는 그런 돌연변이가 (파일에 뷰를 가져 오기) 변경 :

Vue.set(state.nodes, nodeIndex, node) 

그리고 그것은 작동합니다.