Vuex及其五个属性的作用

Vuex及其五个属性的作用

Vuex 是什么?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理构架。它采用统一式存储管理和维护所有组件的可变化的状态。

什么是状态管理模式

状态管理包括三个部分:

  1. State
    驱动应用的数据源。

  2. View
    以声明的方式将State映射到视图上。

  3. Action
    响应在View上,用户号输入导致的状态变化(主要用于操作异步)。

下面是一个单向数据流的示意图:
在这里插入图片描述

单向数据流遇到多个组件共享状态,单向数据流的简洁性很容易被破坏:

  1. 多个视图依赖于同一状态
    传参对于多层嵌套会变得非常麻烦,而且对于兄弟组件的状态传递失效。

  2. 各个视图的行为需要改变同一状态
    我们经常会采用父子组件直接引用或者通过事件进行变更状态,进行多次拷贝,有几率导致代码无法维护。

所以,我们把组件的共享状态提出来,用一个全局单例管理所有状态;无论哪个组件都能够直接获取状态。通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。

在这里插入图片描述
什么情况下我们应使用Vuex?

当你的项目足够简单,不推荐使用Vuex,如果,你需要开发一个中大型项目,那你就可以使用Vuex,在组件外管理状态。

Vuex的五个属性

state, getters, mutations, actions, modules。

  1. state:
    vuex的基本数据,用来存储变量。

  2. getter:
    从基本数据(state)派生的数据,相当于store的计算属性;getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

  3. mutation:
    提交更新数据的方法,必须是同步的(如果需要异步使用action)。每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。
    回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,提交载荷作为第二个参数。

  4. action:
    和mutation的功能大致相同,不同之处在于:
    ① Action 提交的是 mutation,而不是直接变更状态;
    ② Action 可以包含任意异步操作。

  5. modules:
    模块化vuex,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,管理更为方便。

注意:
使用下面这两种方法存储数据:
dispatch:异步操作,写法: this.$store.dispatch(‘mutations方法名’,值)

commit:同步操作,写法:this.$store.commit(‘mutations方法名’,值)

如需更加详细请进入Vuex官网进行学习:Vuex官网

  • 22
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
vuex辅助函数是一组为了简化在Vue组件中访问和使用store中的state、getter、mutation和action的工具函数。使用辅助函数可以减少代码量并提高代码的可读性。其中常用的辅助函数包括mapState、mapGetters、mapMutations和mapActions。 mapState函数可以帮助我们将store中的state映射到组件的计算属性中,使得我们可以直接在组件中访问state的值而不需要通过this.$store.state.xx来获取。这样可以简化代码,并且使得组件与store的关系更加清晰。 mapGetters函数可以帮助我们将store中的getter映射到组件的计算属性中。getter可以理解为store中的派生状态,通过对state的计算而得到的值。使用mapGetters可以让我们在组件中直接访问这些派生状态的值,而不需要通过this.$store.getters.xx来获取。 mapMutations函数可以帮助我们将store中的mutation映射到组件的方法中。mutation是修改store中state的唯一途径,通过提交mutation可以保证所有对state的修改都是同步的。使用mapMutations可以让我们在组件中直接调用mutation的方法,而不需要通过this.$store.commit('mutation名')来提交mutation。 mapActions函数可以帮助我们将store中的action映射到组件的方法中。action可以包含任意异步操作,并通过提交mutation来修改state。使用mapActions可以让我们在组件中直接调用action的方法,而不需要通过this.$store.dispatch('action名')来派发action。 总的来说,vuex辅助函数的作用是简化在Vue组件中访问和使用store中的状态、派生状态、修改状态和派发异步操作的代码,提高代码的可读性和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue全家桶学习—Vuex的4个辅助函数](https://blog.csdn.net/ZHANGYANG_1109/article/details/122050052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题](https://download.csdn.net/download/weixin_38680671/13607816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vuex及其辅助函数](https://blog.csdn.net/qq_45718618/article/details/130002839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值