吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 305|回复: 11
收起左侧

[求助] Vue生命周期中mounted和created的区别

  [复制链接]
Yenull 发表于 2024-11-29 19:53
本帖最后由 Yenull 于 2024-11-29 19:58 编辑

纯小白菜鸟,我在写一网页,用户注册登录后我将user信息存入localStorage,但是当登录完成、页面跳转的时候,我在另一个页面获取user信息却是空的,我怀疑是生命周期的问题,求解。
注册登录代码如下:

[JavaScript] 纯文本查看 复制代码
register(query).then(res => {
        if (res.data.code === 200) {
          login(query).then(res => {
            console.dir(res)
            if (res.data.code == 200) {
              // 登录成功后发出事件,通知父组件
              // 假设 res.data 包含 token 和用户信息
              const { token, user } = res.data.data;

              // 将 token 和用户信息存入 localStorage
              localStorage.setItem('token', token);
              localStorage.setItem('user', JSON.stringify(user));

              console.dir(token)
              console.dir(user)
            }
          })
          this.$message.success("注册成功,直接登入");
          this.$emit('login-success');
        } else if (res.data.data === 501) {
          this.$message.error(res.data.msg);
        }
      }).catch(error => {
        console.error(error);
      })
    },

这是另一个页面的生命周期函数,
[JavaScript] 纯文本查看 复制代码
mounted() {
    //登录卡bug后使用
    // localStorage.removeItem('authToken');
    // localStorage.removeItem('token');
    // localStorage.removeItem('user');
    
  },
  created() {
    this.getUser();
  },

当我查看日志的时候,却发现,先打印了跳转后页面的日志信息,才打印登录页面的日志信息,不太懂了。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xiuyang6620 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

云烟成雨 发表于 2024-11-29 20:34
created在mounted之前,dom尚未渲染,你这个问题不一定是因为生命周期
一只小凡凡 发表于 2024-11-29 20:51
本帖最后由 一只小凡凡 于 2024-11-29 20:57 编辑

Vue 框架自身已配备了完备的状态管理方案,Vue2 版本用 Vuex,Vue3 版本则用 Pinia,既然选择用 JavaScript 框架来构建前端项目,就理应摒弃以往编写前端代码时的传统固有思维模式,充分利用 Vue 框架所提供的先进状态管理特性
HAVENT 发表于 2024-11-29 21:24
本帖最后由 HAVENT 于 2024-11-29 21:32 编辑

同一个页面 created 在 mounted 之前是没问题的,但如果你在 created 执行一个异步方法,那 mounted 就不一定能获取到 created 异步调用的结果了。

如果都在 Vue 架构中,第二个页面不可能早于第一个页面获取值的,你的问题我是没有看太明白到底是什么情况。
z2ctian 发表于 2024-11-29 21:25
同样在学习vue中
jamescookers988 发表于 2024-11-30 06:17
云烟成雨 发表于 2024-11-29 20:34
created在mounted之前,dom尚未渲染,你这个问题不一定是因为生命周期

大佬猜测是什么问题引起的啊!
忆魂丶天雷 发表于 2024-11-30 08:43
如3楼所说,都已经用vue了那么就直接上全家桶,官方已经推出了对应的状态管理库,建议了解一下pinia
Vvvoun 发表于 2024-11-30 08:46
[JavaScript] 纯文本查看 复制代码
写在login().then(res=>{
  ...
this.$message.success("注册成功,直接登入");
this.$emit('login-success');
})
lucklys 发表于 2024-11-30 10:07
和生命周期没关系
LinLinMu 发表于 2024-11-30 10:39
你这看起来是还没存入的时候就跳转了,login是异步的,和生命周期无关,试试将同this.$emit移到login.then里面
0f23ddb5bd604c2765723841d56ef7d.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-9 06:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表