Javascript 如何动态更改另一个vuex组件中的状态?

Javascript 如何动态更改另一个vuex组件中的状态?,javascript,vue.js,websocket,vuex,vuetify.js,Javascript,Vue.js,Websocket,Vuex,Vuetify.js,组件中的状态有问题。我有websocket,上面有一些变化,我把它放在某种状态下。在一个组件中,它可以动态地更改值。但是,当我转到下一个组件(vue路由器)时。它的状态也会发生变化,但不是动态的。嗯。。。在console.log中,将发生更改,但不会更改另一个组件中的值 我怎样才能做到 让我们看一些代码: 这里是我的行动,改变状态 actions: { play(ctx, array){ axios.get('http://localhost/task_run?tas

组件中的状态有问题。我有websocket,上面有一些变化,我把它放在某种状态下。在一个组件中,它可以动态地更改值。但是,当我转到下一个组件(vue路由器)时。它的状态也会发生变化,但不是动态的。嗯。。。在console.log中,将发生更改,但不会更改另一个组件中的值

我怎样才能做到

让我们看一些代码:

这里是我的行动,改变状态

actions: {
    play(ctx, array){

         axios.get('http://localhost/task_run?task_id='+array.id)
        var conn = new WebSocket('ws://localhost:8080', "protocol");
        conn.onmessage = function (ev) {
            ctx.commit('procent', {key:array.key, val:ev.data});
            ctx.commit('procentOne', {key:array.key, val:ev.data});
            console.log('Message: ', ev);
        };
    },
},
mutations: {
    procent(state, val){
        var array =  JSON.parse(val.val);
        state.process[val.key] = array.procent;
        state.processOnePersone[array.comp] = array.procent;
    }

},
state: {
    process: [],
    processOnePersone:[],
},
getters: {
    process(state){
        return state.process
    },
processOnePersone(state){
        return state.processOnePersone;
    }
}
我有一个简编,它在哪里工作

<v-progress-circular
                                :rotate="-90"
                                :size="50"
                                :width="5"
                                :value="process[key]"
                                color="primary"
                        >
                            {{ process[key] }}
                        </v-progress-circular>
         <script>
import {mapGetters} from 'vuex';

export default {
    name: 'taskListComponent',
    computed: {
        ...mapGetters(['process',]),
    },
}

{{进程[key]}
从“vuex”导入{mapGetters};
导出默认值{
名称:“taskListComponent”,
计算:{
…映射器(['process',]),
},
}
以及不起作用的组件

<v-progress-circular
                                :rotate="-90"
                                :size="50"
                                :width="5"
                                :value="processOnePersone[key]"
                                color="primary"
                        >
                            {{ processOnePersone[key] }}
                        </v-progress-circular>
         <script>
import {mapGetters} from 'vuex';

export default {
    name: 'queueComponent',
    computed: {
        ...mapGetters(['processOnePersone',]),
    },
}

{{processOnePersone[key]}
从“vuex”导入{mapGetters};
导出默认值{
名称:'queueComponent',
计算:{
…映射器(['processOnePersone',]),
},
}

这可能与“变更检测注意事项”有关:哦,我不知道。我怎样才能做到?我需要App.vue中的数据()?并将我的反应性消息放入data()?我相信这是state.processOnePersone[array.comp]=array.procent线路无反应。因此,在Vuex state()中使用默认值/空值初始化.processOnePersone[array.comp],或者在Vuex中使用
Vue.set/arr.$set
。非常感谢。我在变异中添加了Vue.set。我的代码看起来像Vue.set(state.processOnePersone、array.comp、array.procent)。现在它开始工作了。谢谢大家;)此外,不久前我做了一个快速笔:这说明了Vue.set如何获得一些性能影响。由于Vue.set在指定的对象键不存在时生成新对象,因此所有依赖组件都会更新。