【vue】个人信息详情页修改以及同步

本文描述了如何在Vue项目中通过登录成功时将用户基本信息存储到全局user对象,并在需要时从localStorage中获取。同时介绍了退出账户时清除本地存储信息的方法。
摘要由CSDN通过智能技术生成

之前做过一次项目又忘了,这次记录一下
在这里插入图片描述
也就是这个”个人信息"的小细节
思路:
在登录成功直接保存用户基本信息到全局user,随后在需要获取的时候再从user中取出。退出账户的时候删除user的相关信息
第一步:在登录成功直接保存用户基本信息到全局user
LoginView.vue登录页面:

<script>
  methods: {
    login() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          request.post("/user/login", this.form).then((res) => {
            if (res.code === 0) {
              this.$message.success("登录成功");
              localStorage.setItem("user", JSON.stringify(res.data)); //存储用户信息到浏览器
              this.$router.push("/"); //登录成功后进行页面跳转
              console.log("Login" + res.data.nickname);
            } else {
              this.$message.error(res.msg);
            }
          });
        }
      });
    },
  },
};
</script>

在登录成功后浏览器已经成功存储user
在这里插入图片描述

第二步:在需要获取的时候再从user中取出
例如:我在header中需要用户的昵称
在这里插入图片描述
那么我就在header组件中取出user
header头部组件

<script >

export default {
 ...
  data() {
    return {
      user: JSON.parse(localStorage.getItem("user")),
    }
  },
...
</script>

再在页面中调用

<span class="el-dropdown-link" style="font-size: 16px">{{ user.nickname }}</span>

于是就成功取出用户的昵称

在账户退出时也不要忘了删本地存储信息

<script>
	methods: {
	    logout() {
	      this.$router.push("/login");
	      localStorage.removeItem("user");
	      this.$message.success("退出成功");
	    },
	  },
</script>

其他的信息,比如头像也是以此类推

个人详情信息也是一样
在这里插入图片描述

  created() {
    const username = this.user.username;
    if (!username) {
      this.$message.error("无法获取用户信息");
      return;
    }
    request.get("/user/getUsername/" + username).then((res) => {
      this.form = res.data;
    });
  },
  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue中实现跳转详情页,可以使用Vue Router。下面是一个简单的例子: 1. 首先,在router/index.js文件中定义路由: ```javascript import Vue from 'vue' import Router from 'vue-router' import Detail from '@/components/Detail' import Home from '@/components/Home' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Home', component: Home }, { path: '/detail/:id', name: 'Detail', component: Detail } ] }) ``` 在这里,我们定义了两个路由:Home和Detail。其中Detail路由包含一个参数:id,表示详情页的id。 2. 在Home组件中,我们可以使用router-link标签来实现跳转: ```html <template> <div> <h1>Home Page</h1> <ul> <li v-for="item in list" :key="item.id"> <router-link :to="{ name: 'Detail', params: { id: item.id }}">{{ item.title }}</router-link> </li> </ul> </div> </template> <script> export default { data() { return { list: [ { id: 1, title: 'Article 1' }, { id: 2, title: 'Article 2' }, { id: 3, title: 'Article 3' } ] } } } </script> ``` 在这里,我们使用了v-for指令遍历文章列表,并使用router-link标签来包装每个文章标题。当用户点击标题时,路由会自动跳转到详情页,并将对应的id传递给Detail组件。 3. 在Detail组件中,我们可以通过$route对象来获取id参数: ```html <template> <div> <h1>Detail Page</h1> <p>Article ID: {{ $route.params.id }}</p> </div> </template> <script> export default { mounted() { // 在这里可以根据id加载文章内容 console.log('Article ID:', this.$route.params.id) } } </script> ``` 在这里,我们使用$route.params.id来获取路由参数中的id值,并在mounted钩子函数中打印它。你可以在这里编写相应的业务逻辑,例如根据id加载文章内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值