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 DIV弹出效果实现代码
Jul 03 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
A标签触发onclick事件而不跳转的多种解决方法
Jun 27 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 Javascript
jQuery页面加载初始化的3种方法(推荐)
Jun 02 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
基于Vue单文件组件详解
Sep 15 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
vue axios 表单提交上传图片的实例
Mar 16 Javascript
微信小程序静默登录的实现代码
Jan 08 Javascript
js在HTML的三种引用方式详解
Aug 29 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详细彻底学习Smarty
2008/03/27 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
php基础学习之变量的使用
2011/06/09 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
iview table高度动态设置方法
2018/03/14 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
python发送伪造的arp请求
2014/01/09 Python
Django实现快速分页的方法实例
2017/10/22 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
python turtle 绘制太极图的实例
2019/12/18 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
2014年结对帮扶工作总结
2014/12/17 职场文书
长征观后感
2015/06/09 职场文书
2016继续教育研修日志
2015/11/13 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
Win10系统下配置Java环境变量
2021/06/13 Java/Android
python三子棋游戏
2022/05/04 Python