vuex存儲(chǔ)數(shù)據(jù)的幾種方法實(shí)例詳解
一、Vuex是什么
Vuex是專門為Vuejs應(yīng)用程序設(shè)計(jì)的狀態(tài)管理工具。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。
1、Vuex的構(gòu)成
1)state
state是存儲(chǔ)的單一狀態(tài),是存儲(chǔ)的基本數(shù)據(jù)。
2)Getters
getters是store的計(jì)算屬性,對(duì)state的加工,是派生出來的數(shù)據(jù)。就像computed計(jì)算屬性一樣,getter返回的值會(huì)根據(jù)它的依賴被緩存起來,且只有當(dāng)它的依賴值發(fā)生改變才會(huì)被重新計(jì)算。
3)Mutations
mutations提交更改數(shù)據(jù),使用store.commit方法更改state存儲(chǔ)的狀態(tài)。(mutations同步函數(shù))
4)Actions
actions像一個(gè)裝飾器,提交mutation,而不是直接變更狀態(tài)。(actions可以包含任何異步操作)
5)Module
Module是store分割的模塊,每個(gè)模塊擁有自己的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中的方法,我這里指定把后面的對(duì)象加在prouduct中changeSetting方法里面去
this.$store.dispatch("product/changeSetting", {
id: this.id,
code: this.code,
});
},//取出vuex中proudct.js中的id的值 this.id = this.$store.state.product.id;
二、本地存儲(chǔ)
vuex存儲(chǔ)的數(shù)據(jù)會(huì)在頁面刷新后被移除,但本地存儲(chǔ)的數(shù)據(jù)卻不會(huì)。本地存儲(chǔ)分兩種:localStorage和sessionStorage
區(qū)別:
- localStorage:可長期存儲(chǔ)數(shù)據(jù),除非用戶清楚localStorage信息,否則數(shù)據(jù)會(huì)一直存在。同一中瀏覽器之間,不同頁面,數(shù)據(jù)可以共享。
- sessionStorage:短期存儲(chǔ)數(shù)據(jù),用戶關(guān)閉標(biāo)簽頁后或直接關(guān)閉瀏覽器后數(shù)據(jù)會(huì)清空。同一瀏覽器不同頁面之間,數(shù)據(jù)不可共享使用方法相同。
1.存儲(chǔ)數(shù)據(jù)
本地存儲(chǔ)可直接使用,不需要引入,代碼如下:
// 將this.pickerItem的數(shù)據(jù)存儲(chǔ)入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中存起來,相當(dāng)于把蘋果放入果盤,我們需要在頁面中的方法里面這樣使用,代碼如下:
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存儲(chǔ)數(shù)據(jù)的幾種方法的文章就介紹到這了,更多相關(guān)vuex存儲(chǔ)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue echarts模擬后端數(shù)據(jù)流程詳解
在平常的項(xiàng)目中,echarts圖表我們也是使用的非常多的,通常我們從后端拿到數(shù)據(jù),需要在圖表上動(dòng)態(tài)的進(jìn)行呈現(xiàn),接下來我們就模擬從后端獲取數(shù)據(jù)然后進(jìn)行呈現(xiàn)的方法2022-09-09
Vue狀態(tài)機(jī)的開啟與停止操作詳細(xì)講解
Vuex是專門為Vuejs應(yīng)用程序設(shè)計(jì)的狀態(tài)管理工具,這篇文章主要給大家介紹了關(guān)于Vuex狀態(tài)機(jī)快速了解與實(shí)例應(yīng)用的相關(guān)資料,需要的朋友可以參考下2023-01-01
Vue項(xiàng)目webpack打包部署到Tomcat刷新報(bào)404錯(cuò)誤問題的解決方案
今天很郁悶,遇到這樣一個(gè)奇葩問題,使用webpack打包vue后,將打包好的文件,發(fā)布到Tomcat上,訪問成功,但是刷新后頁面報(bào)404錯(cuò)誤,折騰半天才解決好,下面小編把Vue項(xiàng)目webpack打包部署到Tomcat刷新報(bào)404錯(cuò)誤問題的解決方案分享給大家,需要的朋友一起看看吧2018-05-05
Vue + Vue-router 同名路由切換數(shù)據(jù)不更新的方法
本篇文章主要介紹了Vue + Vue-router 同名路由切換數(shù)據(jù)不更新的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
基于vue+face-api.js實(shí)現(xiàn)前端人臉識(shí)別功能
基于face-api.js要實(shí)現(xiàn)人臉識(shí)別功能,首先要將自己需要的模型文件下載保存在靜態(tài)目錄下,可以通過cdn的方式在index.html中引入face-api.js,本文給大家介紹vue+face-api.js實(shí)現(xiàn)前端人臉識(shí)別功能,感興趣的朋友一起看看吧2023-12-12
基于vue-ssr的靜態(tài)網(wǎng)站生成器VuePress 初體驗(yàn)
VuePress為每一個(gè)由它生成的頁面提供預(yù)加載的html,不僅加載速度極佳,同時(shí)對(duì)seo非常友好。這篇文章主要介紹了基于vue-ssr的靜態(tài)網(wǎng)站生成器VuePress 初體驗(yàn),需要的朋友可以參考下2018-04-04
vue查詢數(shù)據(jù)el-table不更新數(shù)據(jù)的解決方案
這篇文章主要介紹了vue查詢數(shù)據(jù)el-table不更新數(shù)據(jù)的問題及解決方案,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12

