参考vuex官网: https://vuex.vuejs.org/zh/

1.页面引入

import { mapGetters, mapState, mapMutations, mapActions } from 'vuex';

在vue的页面中引用辅助函数

2.页面中使用

computed: {
	...mapState('xxxMaterial', ['xxxList'])
}

其中 mapState,mapGetters在computed中引用, 此时参数直接挂载到了页面的this中,直接this.引用即可。

methods: {
	...mapActions('xxxMaterial', ['queryList']),
}

mapMutations,mapActions在methods中引用

在工程中使用若是store的设置复杂后,会产生store之间调用的场景。

saveMaterialApp({
		commit,
		state,
		rootState,
		rootGetters
	}, {
		remark
	}) {
		// 保存参数整合
		let params = {
			...rootState.material.xxx.xxx,
			remark
		}
		return app.saveMaterial(params).then(
            ...
		).catch(err => {
			return false;
		})
}

而在actions中,可以直接通过参数rootState和rootGetters直接调用其余namespace中的参数。

actions: {
      // 在这个模块中, dispatch 和 commit 也被局部化了
      // 他们可以接受 `root` 属性以访问根 dispatch 或 commit
      someAction ({ dispatch, commit, getters, rootGetters }) {
        getters.someGetter // -> 'foo/someGetter'
        rootGetters.someGetter // -> 'someGetter'
        rootGetters['bar/someGetter'] // -> 'bar/someGetter'

        dispatch('someOtherAction') // -> 'foo/someOtherAction'
        dispatch('someOtherAction', null, { root: true }) // -> 'someOtherAction'

        commit('someMutation') // -> 'foo/someMutation'
        commit('someMutation', null, { root: true }) // -> 'someMutation'
      },
      someOtherAction (ctx, payload) { ... }
}

与pinia相比,更推荐使用pinia, 其与vuex相比对于vue3的支持使用更加优化友好。