Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。Vuex 可以帮助我们管理共享状态。
State : 唯一数据源,定义的变量都在这里面
Getter : 从State中派生出来一些状态(可以认为getter是store的计算属性),只有当它的依赖被改变时才会触发
Mutation: 更改store中状态的唯一方法,Mutation必须是同步函数
Actions : Actions类似于Mutation。不同点:Actions提交的是Mutation,而不是直接更改状态,Actions可以包含任何异步操作
目录结构:
homeInfo.js文件内容
1 const state = { 2 homeInfoData: '' 3 }; 4 const getters = { 5 homeInfoDataMap (state) { 6 return state.homeInfoData; 7 } 8 } 9 10 const mutations = { 11 updateHomeInfoData (state, payload) { 12 console.log('payload', payload); 13 state.homeInfoData = payload; 14 } 15 }; 16 17 const actions = { 18 updateHomeInfoData ({commit, state}, usersInfo) { 19 commit('updateHomeInfoData', usersInfo) 20 } 21 } 22 export default { 23 namespaced: true, 24 state, 25 getters, 26 mutations, 27 actions 28 }
index.js文件内容
1 import Vue from 'vue' 2 import Vuex from 'vuex' 3 // import createPersistedState from 'vuex-persistedstate'; //持久化数据状态,防止刷新vuex数据丢失 4 import homeInfo from '@/store/modules/homeInfo.js' 5 Vue.use(Vuex); 6 7 export default new Vuex.Store({ 8 modules: { 9 homeInfo 10 } 11 // plugins: [createPersistedState()], 12 })
vueX数据的读取和赋值
1 import { mapActions } from 'vuex'; 2 3 methods: { 4 ...mapActions('homeInfo', ['updateHomeInfoData']), 5 clickBtn () { 6 this.updateHomeInfoData('update'); // 更新数据 7 console.log('homeInfoData', this.$store.state.homeInfo.homeInfoData) 8 } 9 }