什么是 vuex
vuex 是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。
安装依赖
本文使用的是 vue3.0 + vuex4.0 的写法。
npm install vuex --save
使用 vuex
1、创建 store 文件
import { createStore } from "vuex";
// 模拟请求数据
function getUserInfo() {
return new Promise((resolve) => {
resolve({ name: "张三" });
});
}
const store = createStore({
// 相当于 vue 中的 data,存放变量
state() {
return {
userInfo: {},
};
},
// 计算属性,对 state 中的变量进行处理
getters: {
userName(state) {
return state.userInfo.name;
},
},
// 更改 store 中的状态的唯一方式
mutations: {
setUserInfo(state, value) {
state.userInfo = value;
},
},
/*
* action 提交的是 mutation,而不是直接变更状态。
* action 可以包含任意异步操作
*/
actions: {
async getUserInfo({ commit }) {
const userInfo = await getUserInfo();
commit("setUserInfo", userInfo);
},
},
});
export default store;
2、在 main.js 中引入
import { createApp } from "vue";
import App from "./App.vue";
import store from "./store";
const app = createApp(App);
app.use(store);
app.mount("#app");
3、使用共享数据
import { mapState, mapGetters, mapActions } from "vuex";
export default {
created() {
this.getUserInfo();
},
computed: {
...mapState(["userInfo"]),
...mapGetters(["userName"]),
},
methods: {
...mapActions(["getUserInfo"]),
},
};