2017-11-20 22 views
0

私はstate.Nodes.nodesの更新にvuexとsocket.ioを使用しています。私は単一ノード(インデックス4)を更新していますが、setIntervalを使用してロギングするとき、output_stateと計算されたプロパティは全く同じです(ノード4のoutput_state)。vuex計算されたプロパティを持つvueは更新されません。

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) 

これは機能します。

+2

店舗ではどのように値を変更していますか? Vueが検出できない[特定の配列の変更](https://vuejs.org/v2/guide/list.html#Caveats)があります。 –

+0

提案ありがとうございます - 作品 –

答えて

0

私はそのような突然変異(ファイルへのVueのインポート)変更されました:

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

をそして、それは動作します。

関連する問題