vue-x

89 阅读2分钟

的核心是 Store(仓库),相当于是一个容器,它包含着你的应用中大部分的状态 (state),一个 Store 实例中包含以下属性的方法:

  • state :定义属性(状态 、数据)
  • Getter:对state进行加工,派生state的额外状态
  • action:响应组件中用户的动作
  • mutations: 专门书写方法,用来更改(更新) state 中的值

由于store中的状态是响应式的,在组件中调用store中的状态简单到仅需要在计算属性中返回即可。触发变化也仅仅是在组件的methods中提交mutation。

可以通过store.state来获取状态对象,并通过store.commit方法触发状态变更

store.js 中写入:

state 定义属性(状态 、数据) store.js 中写入: // 定义属性(数据) 
var state = { count:6 } // 创建 store 对象 
const store = new Vuex.Store({ state }) // 导出 store 对象 export default store;

二、调用vuex

方式1、 在 app.vue 中就能通过 this.$store 访问该 store 对象 ,获取该 count 。

<template> <div id="app"> //把 count 方法直接写入,可自己执行 <h1>{{count}}</h1> </div> </template> <script> export default { name: 'app', computed:{ count(){ //返回获取到的数据 return this.$store.state.count } } } </script>

方法2:vuex 提供的 mapGetters 和 mapActions 来访问store对象

mapGetters 用来获取属性(数据)

① 在 app.vue组件 中引入 mapGetters

import {mapGetters} from 'vuex'

②在 app.vue 文件的计算属性中调用 mapGetters 辅助方法,并传入一个数组,

在数组中指定要获取的属性 count

<script> import {mapGetters,mapActions} from 'vuex' export default { name: 'app', computed:mapGetters([ //此处的 count 与以下 store.js 文件中 getters 内的 count 相对应 'count' ]) } </script>

getters配置项

对state数据进行加工,生成的额外状态

  1. 概念:当state中的数据需要经过加工后再使用时,可以使用getters加工
  2. 可以看过state的计算属性
  3. getter接受state作为第一个参数

state的额外状态,随着state的变化而做出相应改变的

getters主要是从state之中派生出的额外的状态。类似于vue对象之中的computed了,对state进行额外加工。getters对象之中的每一个元素都是一个方法,传递state对象作为参数。并且getters是会缓存相关的计算数据的,并会随着state的变化而做出相应改变的。

state: { appName: "App" }, getters: { firstLetter:(state) => { return state.appName.substr(0, 1) } }

读取方式

1.this指针之中$store状态管理对象之中的getters来获取模块之中的管理对象。

当设置了namespaced的时候,我们需要通过相应的 模块名称 / getter名称 的形式来获取对应的getter内容。如果没有设置namespaced的时候,则可以直接通过getter名称来获取。

2.通过mapGetters来进行getter的获取,

我们同样可以引入getter为自己所用。全局状态管理模块的getter获取不在话下,但是模块状态管理对象有没有设置命名空间也会影响getter的获取。当没有设置的时候,mapGetters可以直接获取当前模块状态管理对象的getters。设置了的话则不行。

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情