Vue:在 JS 类中使用 Vuex 存储

Posted

技术标签:

【中文标题】Vue:在 JS 类中使用 Vuex 存储【英文标题】:Vue: Using the Vuex store in a JS class 【发布时间】:2020-11-17 05:03:33 【问题描述】:

我有一个 Vue 应用程序,我在其中使用 Socket.io 进行实时连接。我决定将所有 Socket 调用放入它自己的 socket.js 类中,并将该类导入到我的 Vue 组件中。我已经导入了商店,但我希望能够在这个 js 文件中将数据保存到 Vuex 商店,但我不知道如何在 .vue 文件之外执行此操作。

AppSocketIO.js

import store from '../../../store';

class AppSocketIO 
    init() 
        this.socketIO = new AppSocketIO('kjiu887', 
          // run a mutation to save data to the Vuex store
        );
    

VueComponent

mounted() 
    this.initSocket();
,
methods: 
    initSocket: function() 
        const socket = new AppSocketIO();
    

    

【问题讨论】:

【参考方案1】:

这就是我会做的。将套接字保留在单独的文件中。

socket.on('message', (data) => 
  store.commit('mutationName', data) // For mutations
  store.dispatch('actionName', data) // For actions
)

如果您的变更/操作是命名空间的,您必须牢记这一点。

【讨论】:

以上是关于Vue:在 JS 类中使用 Vuex 存储的主要内容,如果未能解决你的问题,请参考以下文章

Vue 3 + vuex 存储未定义

理解Vue的状态管理模式Vuex

vuejs2:如何将 vuex 存储传递给 vue-router 组件

vue vuex(上)

模块 vs 多个 vuex 存储文件

同步存储读取vuex中store中的值