欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vuex 中插件的編寫(xiě)案例解析

 更新時(shí)間:2019年06月10日 15:51:00   作者:水痕001  
Vuex 的 store 接受 plugins 選項(xiàng),這個(gè)選項(xiàng)暴露出每次 mutation 的鉤子。Vuex 插件就是一個(gè)函數(shù),這篇文章主要介紹了vuex 中插件的編寫(xiě)案例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、官方文檔

1、第一步

const myPlugin = store => {
 // 當(dāng) store 初始化后調(diào)用
 store.subscribe((mutation, state) => {
 // 每次 mutation 之后調(diào)用
 // mutation 的格式為 { type, payload }
 });
};

2、第二步

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

二、編寫(xiě)一個(gè)打印日志的插件

1、函數(shù)的書(shū)寫(xiě)

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 數(shù)據(jù)持久化

1、函數(shù)的書(shū)寫(xiě)

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、類似的第三方庫(kù)

1. vuex-persistedstate

2. vuex-persist

總結(jié)

以上所述是小編給大家介紹的vuex 中插件的編寫(xiě)案例解析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

最新評(píng)論