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 相关文章推荐
jQuery中filter(),not(),split()使用方法
Jul 06 Javascript
编程语言JavaScript简介
Oct 16 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
javaScript手机号码校验工具类PhoneUtils详解
Dec 08 Javascript
微信小程序实现导航栏选项卡效果
Jun 19 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
vue实现中部导航栏布局功能
Jul 30 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 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 判断变量类型实现代码
2009/10/23 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
Python中random模块用法实例分析
2015/05/19 Python
Python函数式编程
2017/07/20 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
python实现人机五子棋
2020/03/25 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
什么时候用assert
2015/05/08 面试题
2015年信访维稳工作总结
2015/04/07 职场文书
培训通知
2015/04/17 职场文书
学校团代会开幕词
2016/03/04 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python