Vue 3 - 如何使用 vuex 模块?

Posted

技术标签:

【中文标题】Vue 3 - 如何使用 vuex 模块?【英文标题】:Vue 3 - how to use vuex modules? 【发布时间】:2021-06-05 12:54:36 【问题描述】:

我试图在 vue 3 中使用 vuex 模块。我不确定我做错了什么?

我有 index.js 作为主文件,其余的我打算放在 modules 文件夹中。

当我想调度操作时,我收到一个错误:“[vuex] 未知操作类型:users/registerUser”。

modules file structure

index.js

import  createStore  from 'vuex'
import users from './modules/users'

export default createStore(
  state: 
  ,
  mutations: 
  ,
  actions: 
  ,
  modules: 
    users
  
)

Vue 文件中的调度操作

const registration = () => 
  store.dispatch('users/registerUser', 
    firstName,
    lastName,
    email,
    password
  )

users.js

import  createStore  from 'vuex'

export default createStore(
  namespaced: true,
  state: 
    user: 
      firstName: null,
      lastName: null,
      email: null,
    
  ,
  mutations: 
    UPDATE_FIRST_NAME (state, newValue) 
      state.user.firstName = newValue
    ,
    UPDATE_LAST_NAME (state, newValue) 
      state.user.lastName = newValue
    ,
    UPDATE_EMAIL (state, newValue) 
      state.user.email = newValue
      
  ,
  actions: 
    async registerUser ( commit ,  firstName, lastName, email, password ) 
        const data = 
          firstName,
          lastName,
          email,
          password
        

        console.log(data)
    
  ,
  modules: 
  
)

【问题讨论】:

这里是文档:next.vuex.vuejs.org 你能展示users模块吗? 我更新了我的帖子。您还可以看到 users.js 文件。 有什么建议吗? 你不应该再次在模块中使用 createStore。 documentation 【参考方案1】:

可以创建store.js的文件名 并以这种方式初始化它

 import  createStore  from "vuex" 

const store = createStore(
   state:
      name: "Vue"
   
)

export default store

vue 3 应用的 main.js 看起来像这样,我们可以通过这两种方式使用商店

import  createApp  from 'vue'
import App from './App.vue'
import store from "./store"


createApp(App).use(store).mount('#app')

第二种方式

import  createApp  from 'vue'
import App from './App.vue'
import store from "./store"


const app = createApp(App)
app.use(store)
app.mount('#app')

【讨论】:

我想在主存储文件(index.js)中导入另一个存储模块。 @kasp3rsky 你最后解决了吗?如果是这样,怎么做?提前致谢

以上是关于Vue 3 - 如何使用 vuex 模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vuex 模块 Actions 中使用 vue-router?

如何使用 Quasar 框架访问 Vuex 存储模块操作中的 Vue 路由器?

如何使用 vue-test-utils 和 Jest 在 Nuxt 中对使用 vuex-module-decorators 语法定义的 Vuex 模块进行单元测试?

如何在 Vuex 操作完成之前阻止 Vue 生命周期继续进行?

如何发布带有 Vuex 模块的 Vue.js NPM 包?

vue3.0 vuex的使用