使用localStorage来保持登陆状态

我们用Vue保存状态,肯定是在vuex里面实现的,我们可以通过sessionStorage来防刷新,我在这里重点介绍localStorage来保持登录状态。

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  // 用于定义存在vuex中的状态信息
  state: {
    isLogin: false,
    phone: localStorage.getItem("phone"), //用于表示当前手机号
    imgsrc:localStorage.getItem("imgsrc"),
  },
  getters: {
    //获取登录状态
    isLogin: (state) => state.isLogin,
  },
  // 用于修改state所需要的方法
  mutations: {
    //保存登录状态
    userStatus(state, flag) {
      state.isLogin = flag;
    },
    loginOK(state, newphone) {
      state.isLogin = true;
      state.phone = newphone;
      // 将用户信息存入localStorage持久化保存。防止刷新丢失登录状态
      localStorage.setItem("isLogin", true);
      localStorage.setItem("phone", newphone);
    },
    loginOK2(state, newimg) {
      state.imgsrc = newimg;
      // 将用户信息存入localStorage持久化保存。防止刷新丢失登录状态
      localStorage.setItem("isLogin", true);
      localStorage.setItem("imgsrc", newimg);
    },
  },
  // 用于定义异步方法,执行异步任务后,可以调用mutations修改state
  actions: {
    //获取登录状态
    userLogin({ commit }, flag) {
      commit("userStatus", flag);
    },
  },
  modules: {},
});

一定要了解vuex里面state、getters、mutations、actions的具体含义,我们在下面一个HTML代码段中体现了登陆状态是否显示次页面内容 :v-if="$store.state.isLogin"来进行判断

 <van-tab title="我的收藏" fixed>
        <div v-if="data2">
          <div v-if="$store.state.isLogin" class="list" @click="details">
            <div v-for="v in data2.results" :key="v.nid">
              <div>
                <img :src="v.pic" alt="" />
              </div>
              <div>
                <span>{{ v.title }}</span>
                <span>{{ v.sub }}</span>
                <span>
                  <van-rate
                    :size="15"
                    color="gold"
                    void-icon="star"
                    void-color="gold"
                  />
                </span>
              </div>
            </div>
          </div>
          <div class="error2"  v-else>
            <img src="/images/404.gif" alt="">
            <div @click="goH">登录查看更多哦~</div>
          </div>
        </div>
      </van-tab>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值