一、引入,并区分模块
import Vuex from 'vuex'
import Vue from 'vue'
import user from './modules/user'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
user
},
getters: {
user: state => state.user,
}
})
export default store
二、user文件实例用法
const user = {
state: {
nickName: ''
},
mutations: {
SET_NICK_NAME: (state, nickName) => {
state.nickName = nickName
},
},
actions: {
// 切换部门
async ChangeDept({ commit, state }, deptId) {
return new Promise((resolve, reject) => {
changeDept(process.env.VUE_APP_CLIENT_KEY + ' ' + state.token, deptId).then(({ code, data, msg }) => {
resolve({ code, data, msg })
}).catch(error => {
reject(error)
})
})
},
}
}
export default user
三、普通调用赋值
this.$store.commit('user/SET_NICK_NAME', user.nickName)
四、异步调用actions函数
this.$store.dispatch('ChangeDept', deptId).then(({ code, msg }) => {
if(code != 200) return this.$message.error(msg)
})
五、取值
import { mapState, mapActions, mapGetters } from "vuex";
this.$store.state.user.user //普通取值
computed: {
...mapGetters(['user']),
...mapState({
userId: (state) => state.user.user.userName
})
},
methods: {
...mapActions("user", ["ChangeDept"]),
},
async created() {
this.ChangeDept();
},
最后编辑于 :2025.08.26 16:21:23
©著作权归作者所有,转载或内容合作请联系作者 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。