Vue----vuex五大核心之state、getters、mutation

49 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情juejin.cn/post/714765…

因为我是个学生,每天学习的知识都是老师教的,然后课下自己会练习代码并进行总结。老师今天只教授了五大核心的其中三个,所以也只能给大家分享这三个核心,以及我自己写的小例子,欢迎大家评论哦!!!

store对象里的配置——五大核心

1. state(不能直接修改state的值)

  • Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个唯一数据源(SSOT)而存在。这也意味着,每个应用将仅仅包含一个store 实例。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。

** 单状态树和模块化并不冲突——那么如何将状态和状态变更事件分布到各个子模块中呢?**

  • 在Vue 组件中获得 Vuex 状态
  • 由子Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态。

(1)怎么把store里的数据拿出来?

有两种方法,第一种通过store.state,这样的话哪里用这个数据,就需要在哪个组件里引入store对象。

  • 第二种方法:在main.js里引入store,把store对象添加到vue根实例上。在想用数据的组件里,通过this.$store.state.变量名读取

下图是把store对象放到根实例上:

1.png

  • 注意:读取store里的state数据,必须通过计算属性里来读取,这样的话vue可以自动监听store里指的变化,而且computed也可以进行缓存,进行了优化。 2.png

(2)辅助函数mapState会自动遍历state

mapState的参数为一个对象,键名自定义,键值为一个函数,该函数接收一个参数,就是store里的state。该函数有个返回值,就是state里的数据,然后在模板里使用stuList,得到的就是return的结果。

5.png

2. Getter(可选核心)

作用:可以对相同的逻辑代码进行提取,然后可以把这个逻辑代码放到 Getter里面。它接受一个参数,就是state。getters必须带返回值。

如何往getters里传值?

  • getters里面放的是键值对,键值是一个函数。
  • 如果想在组件里使用getters时传参,可以把键值设置为一个高阶函数,然后传的参数就被return的函数接收到,可以判断接收到的值是true还是false,是true,就返回排完序的state数组sl,否则的话就返回[1,2,3,4] getters.png

mapGetters简写.png 下面这张图是在组件里使用getters属性。 3.png

3. Mutation

  • 作用:它是更改state的唯一方法。
  • 执行它之前,可以通过事件提交commit或者先在action里提交{commit}
  • 它接收一个参数state,可以直接对state的数据进行修改,不需要有返回值。

1.png

2.png