Vuex的深入学习

摘要:
当模块被注册后,它的所有getter、action、及mutation都会自动根据模块注册的路径调整命名。例如:二、Vuex在项目中的使用1.复杂非父子通信2.异步数据快照,可以实现优化三、Vuex的数据持久化用过vuex的肯定会有这样一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉,因为我们的state都是存储在内存中的。

一、状态管理Vuex

1.Vuex使用

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

Vuex的深入学习第1张

(1)state:单一状态书,每个应用将仅仅包含一个store实例

*this.$store.state.状态名字

*...mapState(['title'])

(2)getters:可以从store中派生一些状态,getters的返回值会根据它的依赖缓存起来,且只有当它的依赖值发生了改变才会被重新计算

*可以认为是store的计算属性

*this.$store.getters.计算属性名字

*...mapGetters(['getFilms'])

(3)mutations:更改Vuex的store中的状态的唯一办法就是提交mutation。

*常量的设计风格

[SOME_MUTATION](state){  

//mutate state

}

*必须是同步函数

*this.$store.commit('type','payload')

(4)actions

*Action提交的是mutation,而不是直接变更状态。

*Action可以包含任意异步操作

*this.$store.dispatch('type','payload')

(5)模块分割

Vuex的深入学习第2张

如果希望你的模块具有更高的封装度和复用性,你可以通过添加namespaced:true的方式使其成为带命名空间的模块。当模块被注册后,它的所有getter、action、及mutation都会自动根据模块注册的路径调整命名。例如:

Vuex的深入学习第3张

2.注意

(1)应用层级的状态应该集中到单个store对象中

(2)提交mutation是更改状态的唯一办法,并且这个过程是同步的

(3)异步逻辑都应该封装到action里面

3.Vue chrome devtools

这是一个谷歌浏览器的插件,做前端开发的IT工程师应该比较熟悉这款工具,可以边侧边栏窗格中的页面,边检查代码。由于vue是数据驱动的,所以这就存在在开发调试中查看DOM结构并不能解析出什么。但是借助vue-devtools插件,我们就可以很容易的对数据结构进行解析和调试。例如:

Vuex的深入学习第4张

二、Vuex在项目中的使用

1.复杂非父子通信

2.异步数据快照,可以实现优化

三、Vuex的数据持久化

用过vuex的肯定会有这样一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉,因为我们的state都是存储在内存中的。所以我们通过 vuex-persistedstate这个插件,来实现将数据存储到本地。用法很简单:https://github.com/robinvdvleuten/vuex-persistedstate如图:

Vuex的深入学习第5张

免责声明:文章转载自《Vuex的深入学习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ZZNU 正约数之和laravel使用模型实现跨库连表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端框架Vue自学之Vue CLI(五)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(Vue CLI) 内容:学习和使用Vue CLI2 和 Vue CLI3。如果了解webpack如何一步步配置的,建议可以先看我的前一个博客:前端框架Vue自学之webpack(四)。 正文: Vue CLI 一、Vue CLI 1、前言...

【转】Hbuilder配置Avalon、Vue指令提示

转载自CSDN http://blog.csdn.net/jianggujin/article/details/71419828 我本人是一名Java后端开发,偶尔也会研究一下前端内容,因为Hbuilder是基于eclipse开发的,所以用起来倍感亲切啊,而且在我尝试使用的几款前端开发工具中,Hbuilder的表现也是相当出色地,可以访问Huilder官网...

webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?

资源相对引用路径 问题描述 一般情况下,通过webpack+vuecli默认打包的css、js等资源,路径都是绝对的。 但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static文件夹当成了根路径,那么要解决这种问题,就得引用相对路径。 解决办法 打开webpack.prod.conf.js 找到output:增加publicPat...

在vue中使用tinymce富文本编辑器,解决tinymce在dialog对话框中层级太低的问题

1、安装 npm install tinymce -S 2、把node_modules inymce里面的文件 包括tinymce文件夹 全部复制到static文件夹下面,如下图 3、tinymce默认是英文界面,还需要下载一个中文语言包zh_CN.js https://www.tiny.cloud/get-tiny/language-packages...

vue的main.js

import Vue from 'vue'; import App from './App.vue'; //================http 请求===========================// import request from './lib/request/request'; Vue.prototype.$request...

vue-highlightjs的使用小结

万能的github真主,让我们强大!在vue的项目中想使用highlight.js这样的代码高亮?有人帮助我们实现了vue-highlightjs 安装 yarn add highlight.js -Dyarn add vue-highlight.js -D 这里解释一下为什么要安装两个依赖:vue-highlight.js只是实现了代码高亮的功能,他的...