zoukankan      html  css  js  c++  java
  • 登录后用户信息存储vuex,刷新数据丢失

    npm install vuex --save
    

    main.js

    import store from './store/index.js'
     
    new Vue({
      el: '#app',
      router,
      store,
      components: { App },
      template: '<App/>'
    })
    

    store.js

    // index.js
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state: {
        userInfo: JSON.parse(sessionStorage.getItem('userData')),
      },
      getters: {
        userInfo: state =>{
          if(!state.userInfo){
            state.userInfo = JSON.parse(sessionStorage.getItem('userData'))
          }
          return state.userInfo
        },
      },
      mutations: {
        getUserInfo(state,data){
          state.userInfo = data
          sessionStorage.setItem('userData', JSON.stringify(data))
        },
      },
      actions: {
        getUserInfo(context){
          context.commit('getUserInfo')
        },
      }
    })

    login.vue

    <template>
    <div>
      <input v-model="username" type="text">
      <input v-model="password" type="text">
      <div @click="login">点击登录</div>
    </div>
    </template>
    
    <script>
    import {mapState, mapMutations} from 'vuex'
    export default {
      data(){
        return {
          userInfo: null,
          username: '',
          password: '',
        }
      },
      methods: {
        ...mapMutations(['getUserInfo','getNum']),
        login(){
          this.userInfo = {
            name: this.username,
            age: this.password,
            roles: ['create', 'delete']
          }
          // sessionStorage
          sessionStorage.setItem('userData', JSON.stringify(this.userInfo));  
          // vuex
          this.getUserInfo(this.userInfo)
          this.$router.push({
            path: '/test'
          })
        },
        addNum(){
          this.getNum()
        }
      }
    }
    </script>
    
    <style>
    
    </style>

    退出

    oueLogin(){
          sessionStorage.removeItem('userData')
          this.getUserInfo(null)
          this.$router.push('/')
        }
  • 相关阅读:
    什么是 Native、Web App、Hybrid、React Native和Weex?
    什么是 Native、Web App、Hybrid、React Native和Weex?
    线性表—使用链表实现
    Twins:眼红红
    产品中心
    Koa 学习
    乐山大佛
    Ftp Centos · GitBook
    install jekyll
    MIZ702N开发环境的准备1
  • 原文地址:https://www.cnblogs.com/xhrr/p/13529558.html
Copyright © 2011-2022 走看看