vue2.0使用vuex store保存登录用户名并显示到页面中且在页面中进行更改

vue2.0使用vuex store保存登录用户名并显示到页面中且在页面中进行更改

step1: 在Vuex Store中设置状态state和mutation(更改状态的方法)

// store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
  username: localStorage.getItem('username') || '', // 获取本地存储的用户名,如果没有则为空字符串
}

const mutations = {
  SET_USERNAME(state, username) {
    state.username = username;
    localStorage.setItem('username', username); // 更新localStorage中的用户名
  },
}
export default new Vuex.Store({
  state,
  mutations,
})

step2: 创建一个getter获取用户名(可选,但推荐,便于组件中直接调用)

// getters.js
export const getUsername = state => state.username;

step3: 在组件中展示用户名(Vue组件中,需要注入store,并在计算属性或挂载钩子中获取state中的用户名,并将其绑定到视图上)

// Header.vue 或需要显示用户名的任何组件
<template>
  <div>
    <input v-model="currentUsername" @change="updateUsername" placeholder="请输入用户名">
    <!-- 显示用户名 -->
    <p>当前用户名:{{ displayedUsername }}</p>
  </div>
</template>

<script>
import { mapState, mapGetters } from 'vuex';

export default {
  computed: {
    ...mapState(['username']), // 直接映射state中的username
    ...mapGetters(['getUsername']), // 如果你定义了getter也可以使用
    displayedUsername: {
      get() {
        return this.getUsername; // 或者 this.username;
      }
    },
  },
  data() {
    return {
      currentUsername: this.getUsername, // 初始时将用户名赋值给输入框
    };
  },
  methods: {
    updateUsername() {
      this.$store.commit('SET_USERNAME', this.currentUsername); // 用户名更改后提交mutation更新状态
    },
  },
};
</script>

当在页面上更改currentUsername时,通过@change事件触发updateUsername方法,该方法会提交一个mutation来更新Vuex Store中的用户名,同时这个新的用户名会被同步到localStorage。 页面上的显示部分也会随之自动更新,因为它们与store的状态是绑定的。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值