最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vuex如何重置所有state(可定制)

 更新時間:2019年01月17日 11:53:38   作者:unique丶J  
在正式場景中我們經(jīng)常遇到一個問題,就是登出頁面或其他操作的時候,我們需要重置所有的vuex,讓其變?yōu)槌跏紶顟B(tài),那么如何重置呢,下面就跟隨小編一起來了解一下

在正式場景中我們經(jīng)常遇到一個問題,就是登出頁面或其他操作的時候,我們需要重置所有的vuex,讓其變?yōu)槌跏紶顟B(tài),
那么,就涉及到了多種方法:

1、頁面刷新:

window.location.reload()

這個方法通過路由判斷優(yōu)化或是邏輯優(yōu)化,始終頁面時重新加載,就會導致用戶體驗很差,對瀏覽器來說也是一種不必要的負擔,所以我嘗試之后就放棄了。

2、寫一個重置的方法然后調取

actions.resetVuex = function() {
  store.commit(state.a, null)
  store.commit(state.b, null)
  store.commit(state.c, null)
  ...
}

store.dispatch('resetVuex')

這樣又會出現(xiàn)多個module,多個state,需要手動添加多個,工作量巨大且不易維護,而且如果我們state初始是個個數(shù)組,一個對象這些更不好操作,更優(yōu)最多就是我們初始的時候深拷貝一份,但是也需要每個module里進行操作和封裝

這兩種方法是可以解決問題的,但是我還是沒有采用這兩種方式,因為感覺已經(jīng)犧牲了某些東西來達成目的了,通過我反復的實踐,和摸索我采取了以下方法:

首先頁面加載,第一次加載引入store的時候,store的所有state肯定是初始值,那么我就做一個本地緩存記錄下來:
這里我采用了store插件(引用方式參考 https://github.com/nbubna/store

在main.js創(chuàng)建vue實例之前:

import _store from 'store'
import createStore from './store'
...

const store = createStore() //我創(chuàng)建好的 vuex庫
_store({ initState: store.state }) //緩存一個名為initState的初始狀態(tài)

我們知道m(xù)ain.js是頁面載入的時候執(zhí)行一次的那么緩存的initState就是自己最開始創(chuàng)建store里的state狀態(tài)
(包含了module里的所有state);

然后我們在store創(chuàng)建的全局寫一個mutation方法

這里我采用了store插件(引用方式參考 https://github.com/nbubna/store

這里我采用了lodash插件(引用方式參考 https://www.lodashjs.com/

import _ from 'lodash'
import _store from 'store2'
...

const store = new Vuex.Store({
  state: {
   token: ''
  },
  mutations: {
   resetAllState (state, payload) {
    if (payload instanceof Array === false) { // 驗證傳入的是一個數(shù)組
     return
    }
    
    const initState = _store('initState') // 取出初始值的緩存
    const _initState = payload.length ? _.omit(initState, payload) : initState // 判斷傳入值有無數(shù)據(jù),有數(shù)據(jù)剔除相對應的值
    
    _.extend(state, _initState)
   }
  },
  modules: {
   ...
  }
  })

這個名叫resetAllState的mutation方法里就是講全局的state替換成我們緩存的state。

這里為什么 payload 是一個數(shù)組呢?

因為這就是標題所描述的可定制,如果頁面內重置絕大部分狀態(tài),但需要保留其中一些狀態(tài)的時候我們可以通過我們傳遞過來的state值來剔除相應的state,使其不被更新。

當然我們也可以傳入值來更新相應值,其他所有值不進行更新(這里我們就不詳細說明)

以上就是我實踐思考出來的方法,可能有不足的地方,歡迎大家提問、交流或提出更好的建議。也希望大家多多支持腳本之家。

相關文章

  • Vue.js實現(xiàn)點擊左右按鈕圖片切換

    Vue.js實現(xiàn)點擊左右按鈕圖片切換

    這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)點擊左右按鈕圖片切換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue中關于el-popover的使用

    vue中關于el-popover的使用

    這篇文章主要介紹了vue中關于el-popover的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue3二次封裝element-ui中的table組件的過程詳解

    vue3二次封裝element-ui中的table組件的過程詳解

    這篇文章主要給大家介紹了vue3二次封裝element-ui中的table組件的過程,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友跟著小編一起來學習吧
    2024-01-01
  • Avue和Element-UI動態(tài)三級表頭的實現(xiàn)

    Avue和Element-UI動態(tài)三級表頭的實現(xiàn)

    本文主要介紹了Avue和Element-UI動態(tài)三級表頭的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 使用Vue寫一個datepicker的示例

    使用Vue寫一個datepicker的示例

    這篇文章主要介紹了使用Vue寫一個datepicker的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue3中reactive函數(shù)toRef函數(shù)ref函數(shù)簡介

    Vue3中reactive函數(shù)toRef函數(shù)ref函數(shù)簡介

    這篇文章主要介紹了Vue3中的三種函數(shù),分別對reactive函數(shù)toRef函數(shù)以及ref函數(shù)原理及使用作了簡單介紹,有需要的朋友可以借鑒參考下
    2021-09-09
  • 如何利用SpringBoot與Vue3構建前后端分離項目

    如何利用SpringBoot與Vue3構建前后端分離項目

    在當前的互聯(lián)網(wǎng)時代,前后端分離架構已經(jīng)成為構建應用系統(tǒng)的主流方式,本文將詳細介紹如何利用 SpringBoot 與 Vue3 構建一個前后端分離的項目,感興趣的小伙伴可以了解下
    2025-04-04
  • vue實現(xiàn)百分比占比條效果

    vue實現(xiàn)百分比占比條效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)百分比占比條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue 自定義動態(tài)組件實例詳解

    Vue 自定義動態(tài)組件實例詳解

    vue的ui組件庫很多種,但是這么多的組件庫也不能滿足我們的開發(fā)需求,所以需要我們根據(jù)自己需求自己寫一個插件,下文小編通過兩個栗子給大家介紹js自定義組件的方法,感興趣的朋友一起看看吧
    2018-03-03
  • Element Dropdown下拉菜單的使用方法

    Element Dropdown下拉菜單的使用方法

    這篇文章主要介紹了Element Dropdown下拉菜單的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07

最新評論

黑水县| 邛崃市| 通化县| 永新县| 鹤庆县| 乌鲁木齐县| 尉氏县| 罗山县| 天峨县| 扎囊县| 蓝田县| 南投县| 邹城市| 赤城县| 北海市| 黄山市| 德惠市| 卢湾区| 法库县| 石渠县| 惠来县| 八宿县| 屏南县| 土默特右旗| 紫金县| 莱西市| 伊通| 濉溪县| 安宁市| 喀喇沁旗| 五家渠市| 进贤县| 滨海县| 宁都县| 巨鹿县| 正宁县| 甘洛县| 平凉市| 陇西县| 克东县| 皋兰县|