vuex存儲數(shù)據(jù)的幾種方法實例詳解
一、Vuex是什么
Vuex是專門為Vuejs應用程序設(shè)計的狀態(tài)管理工具。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。
1、Vuex的構(gòu)成
1)state
state是存儲的單一狀態(tài),是存儲的基本數(shù)據(jù)。
2)Getters
getters是store的計算屬性,對state的加工,是派生出來的數(shù)據(jù)。就像computed計算屬性一樣,getter返回的值會根據(jù)它的依賴被緩存起來,且只有當它的依賴值發(fā)生改變才會被重新計算。
3)Mutations
mutations提交更改數(shù)據(jù),使用store.commit方法更改state存儲的狀態(tài)。(mutations同步函數(shù))
4)Actions
actions像一個裝飾器,提交mutation,而不是直接變更狀態(tài)。(actions可以包含任何異步操作)
5)Module
Module是store分割的模塊,每個模塊擁有自己的state、getters、mutations、actions。
2、Vuex的使用
import Vue from "vue" import Vuex from "vuex" Vue.use(Vuex) const state = { id:null, code:null, } const mutations = { //保存數(shù)據(jù) CHANGE_ACTIVE_LI(state, { id, code }) { state.id = id state.code = code }, //清除數(shù)據(jù) SET_CLEAR_DATA(state,data){ state.id=data } } const actions = { //保存數(shù)據(jù) changeSetting({ commit }, data) { commit('CHANGE_ACTIVE_LI', { id: data.id, code: data.code }) }, //清除數(shù)據(jù) clearVuex({ commit }) { commit("SET_CLEAR_DATA", null); }, } export default { //解決模塊名沖突 namespaced: true, state, mutations, actions
next() { //這里的product/changeSetting是指定vuex中的方法,我這里指定把后面的對象加在prouduct中changeSetting方法里面去 this.$store.dispatch("product/changeSetting", { id: this.id, code: this.code, }); },
//取出vuex中proudct.js中的id的值 this.id = this.$store.state.product.id;
二、本地存儲
vuex存儲的數(shù)據(jù)會在頁面刷新后被移除,但本地存儲的數(shù)據(jù)卻不會。本地存儲分兩種:localStorage和sessionStorage
區(qū)別:
- localStorage:可長期存儲數(shù)據(jù),除非用戶清楚localStorage信息,否則數(shù)據(jù)會一直存在。同一中瀏覽器之間,不同頁面,數(shù)據(jù)可以共享。
- sessionStorage:短期存儲數(shù)據(jù),用戶關(guān)閉標簽頁后或直接關(guān)閉瀏覽器后數(shù)據(jù)會清空。同一瀏覽器不同頁面之間,數(shù)據(jù)不可共享使用方法相同。
1.存儲數(shù)據(jù)
本地存儲可直接使用,不需要引入,代碼如下:
// 將this.pickerItem的數(shù)據(jù)存儲入insuranceCode,需提前轉(zhuǎn)化成string類型 localStorage.setItem("insuranceCode", JSON.stringify(this.pickerItem)); sessionStorage.setItem("insuranceCode", JSON.stringify(this.pickerItem));
2.取出數(shù)據(jù)
現(xiàn)在我要把數(shù)據(jù)放入vuex中存起來,相當于把蘋果放入果盤,我們需要在頁面中的方法里面這樣使用,代碼如下:
JSON.parse(localStorage.getItem("insuranceCode")); JSON.parse(sessionStorage.getItem("insuranceCode"));
3.清除數(shù)據(jù)
可清楚指定的數(shù)據(jù),也可清楚所有數(shù)據(jù),代碼如下:
// 清除insuranceCode localStorage.removeItem("insuranceCode"); sessionStorage.removeItem("insuranceCode"); // 清除所有 localStorage.clear(); sessionStorage.clear();
總結(jié)
到此這篇關(guān)于vuex存儲數(shù)據(jù)的幾種方法的文章就介紹到這了,更多相關(guān)vuex存儲數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Vue自定義指令如何實現(xiàn)處理圖片加載失敗的碎圖
這篇文章主要介紹了詳解Vue自定義指令如何實現(xiàn)處理圖片加載失敗的碎圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-02-02Vue+ElementUI 中級聯(lián)選擇器Bug問題的解決
這篇文章主要介紹了Vue+ElementUI 中級聯(lián)選擇器Bug問題的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07如何解決sass-loader和node-sass版本沖突的問題
這篇文章主要介紹了如何解決sass-loader和node-sass版本沖突的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04