vuex如何存儲數據、獲取數據、以及數據的持久化

前提必須已經在vue中安裝了vuex插件不然無法使用,不知道怎么創建vue和安裝vuex的可以看這個視頻,node.js版本最好16以上不然可能會安裝失敗:30分鐘學會Vue之VueRouter&Vuex 趁著暑假掌握一門技能 大學生前端實習畢業設計必備技能_嗶哩嗶哩_bilibili

1、存儲數據:(源碼會放在最后)

第一步,在vuex中matations模塊中加入存儲數據的方法

第二步,在需要提交數據的頁面使用this.$store.dispatch方法

通過點擊事件submitForm即可將數據傳入vuex中。點擊跳轉到About頁面

2、獲取數據

在點擊跳轉的另外一個頁面使用this.$store.state.xxx即可獲取vuex中數據狀態

運行效果:

3、持久化

當我們頁面刷新的時候vuex會丟失之前獲取的數據,如果想刷新后一直保存數據,我們可以安裝插件vuex-persistedstate,

安裝指令:

npm install vuex-persistedstate

提醒:必須使用管理員身份運行cmd終端不然可能會因為權限不夠導致安裝失敗

安裝成功后按這個模版來書寫:

按照這個模版就可以存儲state模塊中的所有數據了。

運行效果:

源碼:

登錄頁面:

<template><div class="home"><div class="samsung"><el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="賬號" prop="pass"><el-input  v-model="ruleForm.user" autocomplete="off"></el-input></el-form-item><el-form-item label="密碼" prop="pass"><el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input></el-form-item><el-form-item label="確認密碼" prop="checkPass"><el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input></el-form-item><el-form-item label="年齡" prop="age"><el-input v-model.number="ruleForm.age"></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm('ruleForm')"  v-loading.fullscreen.lock="fullscreenLoading">提交</el-button></el-form-item></el-form></div><!-- <HelloWorld></HelloWorld> --></div>
</template><script>
export default {data () {const checkAge = (rule, value, callback) => {if (!value) {return callback(new Error('年齡不能為空'))}setTimeout(() => {if (!Number.isInteger(value)) {callback(new Error('請輸入數字值'))} else {if (value < 18) {callback(new Error('必須年滿18歲'))} else {callback()}}}, 1000)}const validatePass = (rule, value, callback) => {if (value === '') {callback(new Error('請輸入密碼'))} else {if (this.ruleForm.checkPass !== '') {this.$refs.ruleForm.validateField('checkPass')}callback()}}const validatePass2 = (rule, value, callback) => {if (value === '') {callback(new Error('請再次輸入密碼'))} else if (value !== this.ruleForm.pass) {callback(new Error('兩次輸入密碼不一致!'))} else {callback()}}return {fullscreenLoading: false,ruleForm: {pass: '',checkPass: '',age: '',user: ''},rules: {pass: [{ validator: validatePass, trigger: 'blur' }],checkPass: [{ validator: validatePass2, trigger: 'blur' }],age: [{ validator: checkAge, trigger: 'blur' }]}}},methods: {submitForm (formName) {this.$refs[formName].validate((valid) => {if (valid) {// alert('submit!')const loading = this.$loading({lock: true,text: '登錄中',spinner: 'el-icon-loading',background: 'rgba(0, 0, 0, 0.7)'})setTimeout(() => {const user = this.ruleForm.userconst pass = this.ruleForm.passconst age = this.ruleForm.agethis.$store.dispatch('setUser', user)this.$store.dispatch('setPass', pass)this.$store.dispatch('setAge', age)loading.close()console.log('登錄成功')this.$router.push('/about')}, 2000)} else {console.log('error submit!!')return false}})},resetForm (formName) {this.$refs[formName].resetFields()}}
}
</script><style scoped>.home {display: flex;justify-content: center;align-items: center;}.samsung {width: 500px;height: 500px;display: flex;justify-content: center;align-items: center;}.denglu{display: flex;justify-content: center;align-items: center;width: 267px;height: auto;}
</style>

獲取數據的頁面:

<template><div class="about"><h1>This is an about page</h1><h1>{{user}}</h1><h1>{{pass}}</h1><h1>{{age}}</h1></div>
</template>
<script>
export default {data () {return {user: '',pass: '',age: 0}},created () {this.type()},methods: {type () {this.user = this.$store.state.userthis.pass = this.$store.state.passthis.age = this.$store.state.ageconsole.log('1', this.user)console.log('2', this.pass)console.log('3', this.age)}}
}
</script>

vuex:

import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'
Vue.use(Vuex)export default new Vuex.Store({state: {user: '',pass: '',age: 0},getters: {},mutations: {SET_PASS (state, pass) {state.pass = pass},SET_USER (state, user) {state.user = user},SET_AGE (state, age) {state.age = age}},actions: {setUser ({ commit }, user) {commit('SET_USER', user)},setPass ({ commit }, pass) {commit('SET_PASS', pass)},setAge ({ commit }, age) {commit('SET_AGE', age)}},modules: {},plugins: [createPersistedState({// 存儲方式:localStorage、sessionStorage、cookiesstorage: window.sessionStorage,// 存儲的 key 的key值key: 'store',reducer (state) { // render錯誤修改// 要存儲的數據:本項目采用es6擴展運算符的方式存儲了state中所有的數據return { ...state }}})]})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209698.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

好代碼資源網整站打包代碼(包含了最新數據),集成了深度二開的ripro主題,非常適合做資源網站創業用

好代碼資源網是基于wordpress開發的一個資源分享類網站&#xff0c;在開發者圈子里還算小有名氣&#xff0c;這里分享嬰整站打包代碼&#xff08;包含了最新數據&#xff09;。網站本身集成了深度二開的ripro主題&#xff0c;非常適合做資源網站創業用。 資源下載類網站目前還…

Button背景顏色改不了,一直是默認的紫色

使用android.widget.Button <android.widget.Buttonandroid:layout_width"wrap_content"android:layout_height"wrap_content"android:onClick"doClick"android:text"這是一個按鈕"android:textColor"color/black"androi…

kubesphere安裝后啟用DevOps

官方文檔&#xff1a;KubeSphere DevOps 系統 1、集群管理---定制資源定義 進入目錄&#xff1a;集群管理---定制資源定義搜索&#xff1a;clusterconfiguration 點擊 ks-installer 右側的 &#xff0c;選擇編輯 YAML 在該 YAML 文件中&#xff0c;搜索 devops&#xff0c;…

力扣98. 驗證二叉搜索樹

深度優先遍歷 思路&#xff1a; 根據二叉搜索樹特性&#xff0c;通過中序遍歷得到有序序列&#xff0c;驗證序列是否有序來判斷&#xff1b;中序遍歷使用棧通過深度優先遍歷&#xff1b; /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tre…

No CUDA GPUs are available

文章目錄 前言嘗試方法一、嘗試方法一二、嘗試方法二 總結 前言 之前用服務器跑的時候&#xff0c;發現是可以跑的。但當有其他人一同使用的時候&#xff0c;就會拋出&#xff1a;No CUDA GPUs are available&#xff0c;這個時候我嘗試了以下兩種方式解決&#xff0c;后面終于…

一到冬天,助聽器出現聲音小、無聲、時有時無……

冬天是一個寒冷干燥的季節&#xff0c;對于助聽器的使用者來說&#xff0c;也是一個需要特別注意保養的季節。助聽器是高精密的電子產品&#xff0c;如果不注意保養&#xff0c;可能會出現聲音小、無聲、時有時無等故障&#xff0c;影響聽力康復的效果。那么&#xff0c;冬天我…

C++中string類的使用

目錄 一.string類 1.1為什么學習string類&#xff1f; 1.2.標準庫中的string類 二.string對象的元素訪問 2.1.1使用operator[]與at實現訪問 2.1.2正向迭代器訪問 2.1.3反向迭代器訪問 2.1.4const正向迭代器&#xff08;不能修改&#xff09; 2.1.5const反向迭代器&#…

計算機網絡知識點合集【王道計算機考研】

學習的最大理由是想擺脫平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;遲一天就多一天平庸的困擾。各位小伙伴&#xff0c;如果您&#xff1a; 想系統/深入學習某技術知識點… 一個人摸索學習很難堅持&#xff0c;想組團高效學習… 想寫博客但無從下手&#xff0c;急需…

維護真實時間:應對系統時間篡改的技巧

引言 在App使用中&#xff0c;由于系統時間用戶可以隨意更改&#xff0c;在某些特殊情況下會導致獲取到的系統時間不正確問題。本篇代碼使用dart語言進行相關描述。 1.問題分析&#xff1a; 手機系統時間 ≠ 真實時間&#xff0c;當我們做一些需要對時間精度和準確性要求較高的…

SQL命令---修改數據庫的編碼

介紹 使用sql命令修改數據庫的編碼&#xff0c;修改為utf8mb4編碼。 命令 alter database 數據庫名稱 default character set utf8mb4;

垃圾收集算法和各種垃圾收集器的實現

深入理解Jvm虛擬機第三章 二、對象已死&#xff1f;3.2.1 引用計數算法3.2.2 可達性分析算法3.2.3 再談引用3.2.4 生存還是死亡3.2.5 回收方法區 三、垃圾收集算法3.3.1 分代收集理論3.3.2 標記-清除算法3.3.3 標記-復制算法3.3.4 標記-整理算法 四、HotSpot的算法細節實現3.4.…

單片機中的printf思考

問題: 1. printf自帶的庫編譯出來的大小比較大(flash吃緊) 2. printf是一個不定長參數, 意味著函數無法知道傳入的長度. 解決這個問題有2中方法:1.設置足夠大小的數組作為參數存儲; 2. 使用動態內存分配的方式來做(應該使用的是這個方式).(內存吃緊) 問題解釋: 1. 之前寫裸…

C# WPF上位機開發(串口界面設計)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 如果只是把上位機看成是純軟件開發&#xff0c;本身不和硬件打交道的話&#xff0c;那么這就把上位機的操作范圍給限定死了。事實上&#xff0c;上…

多線程的使用

進程與線程 進程&#xff1a; 1、進程是指運行中的程序&#xff0c;比如我們使用QQ&#xff0c;就啟動了一個進程&#xff0c;操作系統就會為該進程分配內存空間。當我們使用微信&#xff0c;又啟動了一個進程,操作系統將為其分配新的內存空間。 2、進程是程序的一次執行過程…

數據庫系統概論期末經典大題講解(范式提升、求閉包、求主碼)

上一次我們介紹了數據庫中關系代數查詢&#xff0c;從選擇、投影到連接等操作符&#xff0c;探索了數據庫查詢 大家可以移步我的文章&#xff1a;數據庫系統概論期末經典大題講解&#xff08;用關系代數進行查詢&#xff09;-CSDN博客 今天&#xff0c;我們將繼續沿著數據庫系統…

《python每天一小段》--12 數據可視化《1》

歡迎閱讀《Python每天一小段》系列&#xff01;在本篇中&#xff0c;將使用Python Matplotlib實現數據可視化的簡單圖形。 一、概念 Matplotlib是一個流行的Python數據可視化庫&#xff0c;它提供了豐富的繪圖功能&#xff0c;可以創建各種類型的圖表&#xff0c;包括折線圖、…

Spring框架學習:Bean生命周期

目錄 SpringBean的生命周期 Bean實例屬性填充 三級緩存 常用的Aware接口 Spring IoC容器實例化Bean總結 SpringBean的生命周期 Spring Bean的生命周期是從 Bean 實例化之后&#xff0c;即通過反射創建出對象之后&#xff0c;到Bean成為一個完整對象&#xff0c;最終存儲到…

【MyBatis系列】MyBatis字符串問題

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

SpringBoot + Spring Cloud Alibaba + Nacos實現服務管理

1、參考文檔 Spring Cloud Alibaba參考文檔 https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/zh-cn/index.html Spring Cloud Alibaba官方文檔 https://github.com/alibaba/spring-cloud-alibaba/wiki/ 2、引入 Alibaba 依賴 每個 SpringBoot 都有對應的…

css中2D和3D的區別

CSS中2D和3D的主要區別在于&#xff1a; 維度不同&#xff1a;2D是二維平面&#xff0c;3D是三維空間。可視角度不同&#xff1a;2D只能從一個平面角度看&#xff0c;而3D可以在多個角度上觀察。技術難度不同&#xff1a;3D效果需要更復雜的技術支持&#xff0c;如矩陣變換&am…