vuex 的简介
- vuex 是全局状态管理器,在 state 中定义一个全局变量,能够在任何一个组件中进行获取、批改,并且能够将批改的内容同步到全局
vuex 的装置
npm install vuex --save
vuex 的配置
- 我的项目中新建一个名为 store 的文件夹,用来寄存所有配置文件或设置全局变量的文件
import { createStore } from 'vuex'export default createStore({ // 要设置的全局拜访的state对象 state: { count: 0 }, mutations: { // 进行数据更新,扭转数据状态 countType(state, action) { state.count = state.count + action.addNum } }, actions: { // 执行动作,将数据发散到须要的地位 addCount(context) { let action = { addNum: 20 } context.commit('countType', action) } }, getters: { // 获取到最终的数据后果 getCount(state) { console.log('getters-store中获取到了state', state); return state.count } }})
vuex 的全局注入
- 入口文件(个别为 main.js)中引入 store,而后全局注入
import { createApp } from 'vue'import App from './App.vue'import store from './store'const app = createApp(App)app.use(store)app.mount('#app')
vuex 的应用
- 扭转全局 state 中的变量,这里用的是 vue3 的写法
<template> <div id="useVuex"> <div class="autoMsg">{{ data.count }}</div> <div class="button"> <el-button type="warning" plain @click="add" >触发vuex扭转的事件</el-button > </div> <div class="result scroll"></div> </div></template><script>import { reactive } from "vue";import { useStore } from "vuex";export default { nameL: "useVuex", setup() { let store = useStore(); let data = reactive({ count: 0, }); let add = () => { // 点击的时候,被动去触发store的事件 store.dispatch("addCount"); // store中的事件扭转全局的值,赋给count data.count = store.getters.getCount; }; return { data, add, }; },};
<template> <div id="transDef"> <div class="autoMsg">{{ data.count }}</div> <div class="button"></div> <div class="result scroll"></div> </div></template><script>import { reactive } from "vue";import { useStore } from "vuex";export default { nameL: "transDef", setup() { let store = useStore(); let data = reactive({ count: 0, }); data.count = store.getters.getCount; return { data, }; },};</script>