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 两个窗体之间传值实现代码
Sep 25 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
在 Express 中使用模板引擎
Dec 10 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
Jun 03 Javascript
Google 地图叠加层实例讲解
Aug 06 Javascript
前端弹出对话框 js实现ajax交互
Sep 09 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
Dec 02 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
解决vue-cli webpack打包后加载资源的路径问题
Sep 25 Javascript
微信小程序wxs实现吸顶效果
Jan 08 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
php4的session功能评述(一)
2006/10/09 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
python 容器总结整理
2017/04/04 Python
Python变量赋值的秘密分享
2018/04/03 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
初中家长寄语
2014/04/02 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
2014年家长学校工作总结
2014/11/20 职场文书