美文网首页
Vue状态管理器

Vue状态管理器

作者: 尤雨溪的大迷弟 | 来源:发表于2019-07-12 23:15 被阅读0次

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。


image.png

1.State --- 驱动应用的数据源(存储着需要管理的组件的状态)

(1)组件内部通过 this.$store.state.loginState 拿到登陆状态
(2)组件内部通过 计算属性 结合 mapState 辅助函数拿到组件状态
在需要使用状态的组件内部通过mapState辅助函数获取:

第一步
第二步
第三步

2.Getter --- 可以看作是state的计算属性,类似于组件中的data与computed

tip:getters可以不用,在组件内部写一个关于state的计算属性
(1)组件内部通过 this.$store.getters.len 拿到getter对应的状态
(2)组件内部通过 计算属性 结合 mapGetters 辅助函数拿到getter对应的状态
通过mapGetters辅助函数获取:

第一步
第二步
第三步
此时可以this.len使用len的值在template中{{ len }}使用

3.Mutation --- 更改 Vuex 的store中的状态的唯一方法是提交mutation(同步函数)

Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数


store.js
需更改状态的组件

用常量代替mutation的函数名

创建一个mutation-types.js文件,定义一个常量暴露出去
在store.js中引入这个常量
另一种引入方式:
引入全部的常量
引入全部的常量的这个方式,使用的时候:types.CHANGE_LOGIN_STATE 将函数名改为常量
在登录页面,先引入这个常量(和store.js中引入方法相同),然后把函数名替换掉

用不用常量取决于你——在需要多人协作的大型项目中,这会很有帮助。但如果你不喜欢,你完全可以不这样做

4.Action

Action 类似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。

4.1异步操作在组件内部

store.js中添加kindlist的状态以及添加修改的mutation

store.js
kind.vue
数据渲染到页面
总结:状态管理器中添加kindlist的状态,添加mutation来改变kindlist的状态,在组件内部将请求到的数据提交到mutation,从而储存在kindlist中,然后通过mapState辅助函数拿到更新后的kindlist,最后渲染到页面
4.2异步操作交给状态管理器去处理

(1)在actions中定义一个函数,将之前在组件中的异步操作放到函数中:


store.js

(2)在组件中触发actions


kind.vue

5.module模块组

随着项目的复杂性增加,我们共享的状态越来越多,这时候我们就需要把我们状态的各种操作进行一个分组,分组后再进行按组编写。那今天我们就学习一下module:状态管理器的模块组操作。

5.1声明模块组:
在vuex/store.js中声明模块组,我们还是用我们的const常量的方法声明模块组。代码如下:

const moduleA={
    state,mutations,getters,actions
}

声明好后,我们需要修改原来 Vuex.Stroe里的值:

export default new Vuex.Store({
    modules:{a:moduleA}
})

5.2在组件中使用:

<span>{{ $store.state.a.loginState}}</span>

个人理解至此实现了:
vue components通过dispatch触发actionsactions提交commitmutationsmutations更改state的状态,state中的状态通过组件vue components渲染到页面!

tips:为什么要使用状态管理器 --- 方便各个组件间的传值!

相关文章

  • vue的学习笔记总结

    1.常用名词 npm:包管理器,用于下载资源包 vue-router:vue推荐的路由框架 vuex: 状态管理器...

  • VUE100问

    vue-cli工程 vue.js核心知识 vue-router路由 vuex状态管理器 axios等http请求 ...

  • Vue状态管理器

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应...

  • Vue学习笔记(五):如何触发组件更新

    vue:数据驱动的视图框架 数据包含:1、父元素的属性 2、组件自身的状态 3、状态管理器,vuex、Vue.Ob...

  • Vuex 2.0

    概念 Vuex 类似 Redux 的状态管理器,用来管理Vue的所有组件状态。 为什么使用Vuex? 当你打算开发...

  • vue spa 微信公众项目开发与填坑之旅

    Base vue-cli2.9.3 注入插件 1. vuex => 支持状态管理器 2.v...

  • Vuex

    简介:vue官方提供的状态管理器 vuex的使用步骤: 安装:npm install --save vuex; 在...

  • vue spa 微信公众项目开发与填坑之旅

    Base vue-cli3.0 注入插件 1. vuex=>支持状态管理器 2.vuex-persistedsta...

  • Vuex原理解析

    vue是目前最流行的前端框架之一,vuex则是一个状态管理器,负责管理vue中各个对象的状态变化并同步渲染到页面上...

  • vuex

    VUEX的使用 vuex的作用: 常用来作为全局状态管理器, 定义一个状态全局可用,部分功能与缓存类似,但是vue...

网友评论

      本文标题:Vue状态管理器

      本文链接:https://www.haomeiwen.com/subject/ikpukctx.html