kas*_*sky 1 vue.js vuex vuejs3
我试图在 vue 3 中使用 vuex 模块。我不确定我做错了什么?
我将 index.js 作为主文件,其余的我计划将其放入模块文件夹中。
当我想调度操作时,出现错误:“[vuex] 未知操作类型:users/registerUser”。
索引.js
import { createStore } from 'vuex'
import users from './modules/users'
export default createStore({
state: {
},
mutations: {
},
actions: {
},
modules: {
users
}
})Run Code Online (Sandbox Code Playgroud)
Vue 文件中的调度操作
const registration = () => {
store.dispatch('users/registerUser', {
firstName,
lastName,
email,
password
})
}Run Code Online (Sandbox Code Playgroud)
用户.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: {
}
})Run Code Online (Sandbox Code Playgroud)
您可以创建 store.js 的文件名并以这种方式初始化它
import { createStore } from "vuex"
const store = createStore({
state:{
name: "Vue"
}
})
export default store
Run Code Online (Sandbox Code Playgroud)
vue 3 应用程序的 main.js 将如下所示,我们可以通过这两种方式使用商店
import { createApp } from 'vue'
import App from './App.vue'
import store from "./store"
createApp(App).use(store).mount('#app')
Run Code Online (Sandbox Code Playgroud)
和第二种方式
import { createApp } from 'vue'
import App from './App.vue'
import store from "./store"
const app = createApp(App)
app.use(store)
app.mount('#app')
Run Code Online (Sandbox Code Playgroud)