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 相关文章推荐
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
js location.replace与location.reload的区别
Sep 08 Javascript
创建js对象和js类的方法汇总
Dec 24 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
Dec 22 Javascript
JS二叉树的简单实现方法示例
Apr 05 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
vue服务端渲染添加缓存的方法
Sep 18 Javascript
微信小程序点击滚动到指定位置的实现
May 22 Javascript
JS实现放大镜效果
Sep 21 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 Try Catch异常测试
2009/03/01 PHP
php强制下载类型的实现代码
2011/04/21 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
bootstrap轮播图示例代码分享
2017/05/17 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
公司市场部岗位职责
2013/12/02 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
仓库组长岗位职责
2014/01/29 职场文书
狼和鹿教学反思
2014/02/05 职场文书
优质服务演讲稿
2014/05/14 职场文书
社团个人总结范文
2015/03/05 职场文书
综合素质自我评价评语
2015/03/06 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
同学聚会通知短信
2015/04/20 职场文书
python 命令行传参方法总结
2021/05/25 Python
深入理解go slice结构
2021/09/15 Golang
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers