vuex 中插件的编写案例解析


Posted in Javascript onJune 10, 2019

一、官方文档

1、第一步

const myPlugin = store => {
 // 当 store 初始化后调用
 store.subscribe((mutation, state) => {
 // 每次 mutation 之后调用
 // mutation 的格式为 { type, payload }
 });
};

2、第二步

const store = new Vuex.Store({
 // ...
 plugins: [myPlugin]
});

二、编写一个打印日志的插件

1、函数的书写

import _ from 'lodash';
function logger() {
 return function(store) {
 let prevState = store.state;
 store.subscribe((mutations, state) => {
  console.log('prevState', prevState);
  console.log(mutations);
  console.log('currentState', state);
  prevState = _.cloneDeep(state);
 });
 };
}

2、使用

export default new Vuex.Store({
 modules: {
 ...
 },
 strict: true,
 plugins: process.NODE_ENV === 'production' ? [] : [logger()]
});

三、 vuex 数据持久化

1、函数的书写

function vuexLocal() {
 return function(store) {
 const local = JSON.parse(localStorage.getItem('myvuex')) || store.state;
 store.replaceState(local);
 store.subscribe((mutations, state) => {
  const newLocal = _.cloneDeep(state);
  sessionStorage.setItem('myvuex', JSON.stringify(newLocal));
 });
 };
}

2、使用

export default new Vuex.Store({
 modules: {
 ...
 },
 strict: true,
 plugins: process.NODE_ENV === 'production' ? [vuexLocal()] : [logger(), vuexLocal()]
});

3、类似的第三方库

1. vuex-persistedstate

2. vuex-persist

总结

以上所述是小编给大家介绍的vuex 中插件的编写案例解析,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
JavaScript中的对象化编程
Jan 16 Javascript
javascript 选择文件夹对话框(web)
Jul 07 Javascript
你需要知道的10个最佳javascript开发实践小结
Apr 15 Javascript
js制作的鼠标悬浮时产生的下拉框效果
Oct 27 Javascript
js判断浏览器类型为ie6时不执行
Jun 15 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
jQuery满意度星级评价插件特效代码分享
Aug 19 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
如何能分清npm cnpm npx nvm
Jan 17 Javascript
Vue.js实现可排序的表格组件功能示例
Feb 19 Javascript
浅析我对JS延迟异步脚本的思考
Oct 12 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 #Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 #Javascript
前端路由&webpack基础配置详解
Jun 10 #Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 #Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
Jun 10 #Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
Jun 10 #Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 #Javascript
You might like
十天学会php之第六天
2006/10/09 PHP
PHP实现下载功能的代码
2012/09/29 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
微信小程序倒计时功能实例代码
2018/07/17 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
js单线程的本质 Event Loop解析
2019/10/29 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
工地资料员岗位职责
2013/12/31 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
公司请假条范文
2014/04/11 职场文书
协议书的格式
2014/04/23 职场文书
电视节目策划方案
2014/05/16 职场文书
采购部年度工作总结
2015/08/13 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
logback 实现给变量指定默认值
2021/08/30 Java/Android