vuex 状态管理demo
01) 基本目录结构(自己创建)
src
--vuex
------actions.js
------getters.js
------index.js
------mutations.js
02) src/vuex/index.js
内容
import Vue from 'vue' import Vuex from 'vuex' import mutations from './mutations' import actions from './actions' import getters from './getters' Vue.use(Vuex); const state = { //demo 定义所需要的属性 count: 10 }; const store = new Vuex.Store({ state, mutations, actions, getters }); export default store
03)src/vuex/mutations.js
内容
// mutations 同步函数 const mutations = { increment_vuex(state) { //demo state.count++ } }; export default mutations
04)src/vuex/actions.js
内容
// actions 异步函数;提交使用dispatch const actions = {}; export default actions
05)src/vuex/getters.js
内容
// 相当于计算属性 computed const getters = {}; export default getters
06)src/main.js
注册vuex
import Vue from 'vue' import App from './App.vue' import router from './router/index' import store from './vuex/index' Vue.config.productionTip = false Vue.prototype.$dafei = "我是自定义全局变量"; new Vue({ render: h => h(App), router, store //demo }).$mount('#app');
07)src/App.vue
中使用
<template> <div id="app"> {{ $route.meta.title}} ---我是元数据title <input type="button" value="点击vuex" @click="increment()"> <router-view></router-view> </div> </template> <script> export default { name: 'app', methods:{ increment() { // increment_vuex 为 src/vuex/index.js mutations中的方法 this.$store.commit('increment_vuex'); console.log(this.$store.state.count); } } } </script>