| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> Vuex保持状态和WEBstorage存放信息搭配使用 -> 正文阅读 |
|
[JavaScript知识库]Vuex保持状态和WEBstorage存放信息搭配使用 |
首先,先了解一些Vuex,引入就先不多说了,引入Vuex相信组件库里比我更加全面,下面说一下Vuex常用的几个属性 State:[ 属性:存放想要保存的数据 ] Mutations:[ 用来使用state的方法 ?(同步) 格式 ?eg: ? loginOK(state,payload){? #state是上面存储的数据,payload是页面传来的数据 内容 } ] Actions:[ 异步使用方法 ] Actions和mutations的区别就是一个同步,一个异步,为了结构上更加合理 ------------------------------------------------------------------------------------------------- 下面来说一些如何使用这些数据: /*提交vuex,更新信息*/ 这是在需要保存的页面写的代码 This.$store.commit(‘mutations里的方法’,赋值) 这是在vuex里面写的: State.(里面的数据属性名)? ??#调取state里的数据 ----------------------------------------- 相信很多小伙伴都会想 为什么已经用Vuex持久化了,为什么还要用WEBstorage呢? 因为Vuex在刷新将丢失数据?? 而html更新后自带的功能更加强大,更符合我们的项目需求
如果想一直保存数据,需要vuex搭配webstorage?? ,根据需求选择loacl或者session 那么我们该如何调用使用呢? 这里拿Sessionstorage举例子,如果用的Localstorage,直接替换就行 查: Sessionstorage.getItem(‘state里面的属性’) 改: Sessionstorage.setItem(‘state里面的属性’,赋值) 删: Sessionstorage.removeItem(‘state里面的属性’) 清除数据: Sessionstorage.clear() 有一点要注意的是,存储数据要不能存对象,如果需要,需要转字符串 ?eg: let ls = window.localStorage let ss = window.sessionStorage ls.setItem('islogin', 'true') ss.setItem('username', 'zs') //? 若存储对象 let user = {name: 'zs', age: 15, gender: '男'} sessionStorage.setItem('user', JSON.stringify(user)) --------------------------------------------- 大家看了这么久,相信对于原理和使用方法已经有了一定的了解,下面直接上代码,方便大家更轻松的掌握? 下面是一个简易的登陆保持 一个vuex,一个index首页(用到保持的信息),一个login登录页(提交需要保存的信息) Vuex: ? state: { ? ? islogin:sessionStorage.getItem('islogin'), ?//用于存储当前用户是否已登陆 ? ? username:sessionStorage.getItem('username'), ? ?//存储当前用户名 ? }, ? mutations: { ? ? // 提供一个方法,登陆成功后修改state属性 ? ? loginok(state,payload){ ? ? ? state.islogin=true ? //修改登录状态 ? ? ? state.username=payload ? ?//修改登陆用户信息 ? ? ? //还需要将状态信息,存入sessionStorage ? ? ? sessionStorage.setItem('islogin',true) ? ? ? sessionStorage.setItem('username',payload) ? ? }, ?Login.vue:登录页 ? ?<script> ?if(this.checkName() && this.checkPwd()){ ? ? ? ?console.log('登陆成功'); ? ? ? ?this.axios.post('/login', ? ? ? ? ?`username=${this.name}&password=${this.pwd}`) ? ? ? ? ?.then( ? ? ? ? ? ?res=>{ ? ? ? ? ? ? ?if(res.data.code==200){ ? ? ? ? ? ? ? ? ? // 提交vuex,更新用户信息 ? ? ? ? ? ? ? ? ?this.$store.commit('loginok',this.name)? //此处的this.name就是payload ? ? ? ? ? ? ? // ?弹窗跳转 ? ? ? ? ? ? ? ?this.$toast('登陆成功') ? ? ? ? ? ? ? ?this.$router.push('/') ? ? ? ? ? ? ?}else{ ? ? ? ? ? ? ? ?this.$messagebox({ ? ? ? ? ? ? ? ? ?title:'提示', ? ? ? ? ? ? ? ? ?message:"账号密码输入错误" ? ? ? ? ? ? ? ?}) } </script> Index.vue: <div slot="right" v-if="$store.state.islogin"> ? ? ? ? 欢迎:{{$store.state.username}} ? ? ? </div> |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:26:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |