Vuex结合storage实现用户信息本地存储方式

目录
  • 首先安装插件库good-storage
  • 在你写离线存储逻辑部分的地方引入good-storage
  • 接下来是定义vuex的代码部分
  • 在外部组件中的操作如下

自己学习的过程中遇到用户新的填写的页面,所以就想着页面每次刷新之后总不能一直填写,哇,累死,所以就想到了离线存储机制,这里使用的是good-storage封装库结合Vuex来实现这个功能,在此做个笔记。

首先安装插件库good-storage

npm install good-storage

在你写离线存储逻辑部分的地方引入good-storage

盘它。呐~,呐~下面是我写的用户部分信息的存储逻辑

import storage from "good-storage"    //引入
const USER_DATAS="__userdatas__"      //定义键值
 
//用户信息存储,这里传入一个参数是个对象
export function saveUserData(obj){
    let userDatas=storage.get(USER_DATAS,{});   //获取存储的值,若没有,返回一个空对象
    if(obj.phone){
        userDatas.phone=obj.phone;
    }
    if(obj.name){
        userDatas.name=obj.name;
    }
    if(obj.sex){
        userDatas.sex=obj.sex;
    }
    if(obj.education){
        userDatas.education=obj.education;
    }
    if(obj.industry){
        userDatas.industry=obj.industry;
    }
    storage.set(USER_DATAS,userDatas);
    return userDatas;
}
 
//获取用户本地存储的信息,如果没有存储过,返回一个空对象
export function loaduserDatas(){
    return storage.get(USER_DATAS,{});
}

接下来是定义vuex的代码部分

state.js如下

import {loaduserDatas} from "common/js/cache"  //这里按照自己的路径引入进去
const state={
    user_datas:loaduserDatas()       //获取到用户信息
}
export default state

getters.js 映射state中的数据,方便在外部组建中引入数据

export const user_datas = state => state.user_datas;

mutation-types.js

export const SET_USERDATA="SET_USERDATA"

mutaion.js提交修改之后的obj对象,即用户信息

import * as types from "./mutation-types.js"
const mutations={
    [types.SET_USERDATA](state,obj){
        state.user_datas=obj
    }
}
export default mutations;

actions.js 因为有可能同时修改多个用户信息内容,所以这里选择使用action进行异步操作,提交mutation

//同样按照自己的目录引入所需文件
 
import {saveUserData} from "common/js/cache"
import * as types from "./mutation-types.js"
export const saveUserDatas=function({commit},obj){
    commit(types.SET_USERDATA,saveUserData(obj))
}

在外部组件中的操作如下

我的文件是datum.vue

datum.vue

<script>
import {mapGetters,mapActions} from "vuex";
export default{
     data() {
        return {
          dateStr:this.userName,
          showDate:false,
          nickName:"",
          revise:false,
          showNicknameMod:false,
          userDatasObj:{
              name:"",
              phone:'18419954234',
              sex:'',
              education:'本科',
              industry:'互联网电子商务'
          }
        }
      },
 
      computed:{
          selectedDate(){
              return this.showDate ? this.dateStr : this.userName ;
          },
          _nickName(){
              if(this.revise){
                  return this.nickName;
              }else{
                  if( !this.user_datas.name){
                      return "请输入昵称"
                  } 
                  else{
                      return this.user_datas.name
                  }
              }
          },
          _sex(){
              if(!this.user_datas.sex){
                  return "请选择"
              }
              return this.userDatasObj.sex=this.user_datas.sex;
          },
          _selectEdu(){
              if(!this.user_datas.education){
                  return "请选择"
              }
              return this.userDatasObj.education=this.user_datas.education;
          },
          _industry(){
              if(!this.user_datas.industry){
                  return "请选择"
              }
              return this.userDatasObj.industry=this.user_datas.industry;
          },
        
        //获取到用户原来的信息,并进行相应的逻辑判断,看自己的情况哈。以上是我个人的
          ...mapGetters([
              "user_datas"
          ])
      },
        methods:{
               
            savedInfo(){
                this.saveUserDatas(this.userDatasObj);
                
            },
 
            //引入action中的提交信息操作,在保存信息的时候直接调用,传入信息对象参数
              ...mapActions([
                  "saveUserDatas"
              ])
        },
    }
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue项目使用localStorage+Vuex保存用户登录信息

    本文实例为大家分享了Vue使用localStorage+Vuex保存用户登录信息的具体代码,供大家参考,具体内容如下 api.js import axios from 'axios' const baseURL = 'http://XXX // 全局的 axios 默认值 axios.defaults.baseURL = baseURL // 登录请求 const loginCheck = params => { return axios.post('/login', params).then(

  • weex里Vuex state使用storage持久化详解

    在weex里使用Vuex作为state管理工具,问题来了,如何使得state可以持久化呢?weex官方提供store模块,因此我们可以尝试使用该模块来持久化state. 先看下该模块介绍: storage 是一个在前端比较常用的模块,可以对本地数据进行存储.修改.删除,并且该数据是永久保存的,除非手动清除或者代码清除.但是,storage 模块有一个限制就是浏览器端(H5)只能存储小于5M的数据,因为在 H5/Web 端的实现是采用 HTML5 LocalStorage API.而 Andro

  • 使用vuex存储用户信息到localStorage的实例

    1.首先需要装vuex npm install vuex -d 2.新建store文件夹,新建index.js, 并引入vue.vuex,代码如下: import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const key = 'user' const store = new Vuex.Store({ state () { return { user: null } }, getters: { getStorage: functi

  • mpvue中配置vuex并持久化到本地Storage图文教程解析

    # 配置vuex和在vue中相同,只是mpvue有一个坑,就是不能直接在new Vue的时候传入store. 步骤: 1.在src目录下新建一个store目录,结构如下(官方推荐:  vuex.vuejs.org/zh-cn/struc-) 2. 在main.js中引入你的store, 并绑定到Vue构造函数的原型上,这样在每个.vue的组件都可以通过this.$store访问store对象. 3. ok,可以使用了.我说一下vuex官方推荐的使用方案(可适应大型应用). 首先在mutation

  • Vuex结合storage实现用户信息本地存储方式

    目录 首先安装插件库good-storage 在你写离线存储逻辑部分的地方引入good-storage 接下来是定义vuex的代码部分 在外部组件中的操作如下 自己学习的过程中遇到用户新的填写的页面,所以就想着页面每次刷新之后总不能一直填写,哇,累死,所以就想到了离线存储机制,这里使用的是good-storage封装库结合Vuex来实现这个功能,在此做个笔记. 首先安装插件库good-storage npm install good-storage 在你写离线存储逻辑部分的地方引入good-st

  • 5个HTML5的常用本地存储方式详解与介绍

    在 HTML5 规范之前,存储主要是用 cookies .但cookies也有缺点: 在请求头上带着数据: 大小是 4k 之内: 主 Domain 污染: cookies 的主要应用:购物车.客户登录. 由于存在这么多缺点,因此我们需要解决以下问题: 解决 4k 的大小问题: 解决请求头常带存储信息的问题: 解决关系型存储的问题: 跨浏览器: HTML5的5种存储方式 1. 本地存储 localstorage 存储方式: 以键值对( Key-Value)的方式存储,永久存储,永不失效,除非手动删

  • 如何利用Typescript封装本地存储

    目录 前言 本地存储使用场景 使用中存在的问题 解决方案 功能实现 加入过期时间 加入数据加密 加入命名规范 完整代码 总结 前言 本地存储是前端开发过程中经常会用到的技术,但是官方api在使用上多有不便,且有些功能并没有提供给我们相应的api,比如设置过期时间等.本文无意于介绍关于本地存储概念相关的知识,旨在使用typescript封装一个好用的本地存储类. 本地存储使用场景 用户登录后token的存储 用户信息的存储 不同页面之间的通信 项目状态管理的持久化,如redux的持久化.vuex的

  • 基于js 本地存储(详解)

    在客户端运行的JS是不能操作用户电脑磁盘中的文件的(保护客户端运行的安全) 1.JS中的本地存储: 使用JS向浏览器的某一个位置中存储一些内容,浏览器即使关闭了,存储的信息也不会销毁,当在重新打开浏览器的时候我们依然可以获取到上一次存储的信息 本地存储的方案: 传统: cookie:把信息存储到客户端的浏览器中(但是项目服务器端也是可以获取COOKIE的) session:把信息存储到服务器上的(服务器存储) HTML5:webStorage localStorage:永久存储在客户端的本地 s

  • JS项目中对本地存储进行二次的封装的实现

    目录 前言 定义恒量的键名 下层实现 上层调用 总结 前言 平时在开发的中,发现身边同事在使用localStorage和sessionStorage的时候,喜欢在代码里面直接调用,举个的栗子: function login() { //...请求 const userInfo = {userId: 123, userName: '张三'} sessionStorage.setItem('userInfo', JSON.stringify(userInfo)) } function getUser

  • Vuex处理用户Token过期及优化设置封装本地存储操作模块

    目录 1. 处理用户 Token 2. 优化封装本地存储操作模块 - 封装localStrage功能 3. Vuex各属性的使用 4. 关于 Token 过期问题 5.优化设置 Token 1. 处理用户 Token Token 是用户登录成功之后服务端返回的一个身份令牌,在项目中的多个业务中需要使用到: 访问需要授权的 API 接口 校验页面的访问权限 ... 问题:Token往哪儿存? 我们只有在第一次用户登录成功之后才能拿到 Token.所以为了能在其它模块中获取到 Token 数据,我们

  • nuxt使用vuex存储及获取用户信息踩坑的解决

    目录 一.背景 二.具体使用方法以及遇到的问题 三.解决办法 一.背景 按公司要求做一个电商网站,考虑到seo,所以用的是nuxt进行开发. 登录之后记录用户信息(user)使用cookie+vuex模式. 二.具体使用方法以及遇到的问题 1.无法解码导致无法转化为对象且不支持中文: 使用nuxt的nuxtServerInit在在服务端的cookie里获取用户信息,但是user在存储时使用js-cookie,客户端已对数据进行编码且可能包含中文,在使用JSON.parse进行string转化为对

  • 利用vuex-persistedstate将vuex本地存储实现

    目录 vuex-persistedstate将vuex本地存储 使用场景 Vuex-persistedstate API vuex的本地存储 vuex是什么 vuex中的五大核心 当然vuex的本地存储还有一种方式 vuex-persistedstate将vuex本地存储 使用场景 最近在做Vue项目中的登录模块,登陆成功后获取到token,将token存储在vuex中,然而我发现切换路由后vuex中的数据都恢复默认了,原来页面刷新之后vuex的数据都会恢复默认.而后面进行鉴权处理需要token

  • JS实现本地存储信息的方法(基于localStorage与userData)

    本文实例讲述了JS实现本地存储信息的方法.分享给大家供大家参考,具体如下: WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:IE6以上的userData,Firefox下面的globalStorage,以及Flash的本地存储,除了Flash之外,其他的几个都有一些兼容性的问题. sessionStorage与localStorage Web Storage实际上由

随机推荐