弄懂Vuex中的mapState、mapGetters、mapMutations、mapActions

弄懂Vuex中的mapState、mapGetters、mapMutations、mapActions
最新回答
葫芦岛

2021-11-14 19:45:29

在Vue应用中,Vuex提供了四个核心概念:state、getters、mutations和actions,以管理和共享应用的状态。以下是它们的简要介绍:

1. **state**:类似Vue的data,用于存放全局数据。在组件中,通过$store访问。在引入组件时,可以避免组件间直接的数据传递。mapState辅助函数允许在计算属性中更简便地引用state。

2. **getters**:处理和计算state的值,类似计算属性,但允许传参。getters可以进一步加工state,得到所需的值。

3. **mutations**:处理状态更改的同步方法,类似Vue的methods。需要通过commit调用,第一个参数是state,第二个参数是载荷。使用mapMutations简化方法映射。

4. **actions**:异步操作,类似mutation,但可以提交mutation。actions通常处理axios请求这样的异步操作,通过mapActions调用。

在实际开发中,遵循以下原则:

- 依赖state获取新数据,用getters(只读)

- 修改state的值,用mutations(同步操作)

- 异步操作或axios请求,放入actions,通过commit调用mutations更新state

例如,登录后获取用户信息,首先在actions中定义getUserInfo方法,然后在组件的created钩子中调用,通过mapActions映射。在mutations中设置用户信息到state。

为了代码组织和错误检测,推荐使用常量替代mutation事件类型,比如定义一个mutation_type.js文件存储常量,这样可以减少出错时的查找难度。

总的来说,Vuex通过合理的结构化管理,确保了状态的可复用和可维护性,提高了代码的清晰度和可调试性。