在mounted获取不到data中的值,其中data的值是由在created中请求并初始化的。

在mounted获取不到data中的值,其中data的值是由在created中请求并初始化的。

今天发现,在created中发起ajax请求,并给data中的值进行了初始化,随后想要在mounted使用初始化后的值,结果却怎么也获取不到,打印的结果如下:
在这里插入图片描述
js代码是这样的

export default {
  created() {
    this.getData();
  },
  data() {
    return {
      reportData: {}
    };
  },
  methods: {
    async getData() {
      const { data: res } = await this.$http.get("reports/type/1");
      if (res.meta.status !== 200) {
        this.$message.error("获取报表失败!");
      }
      this.reportData = res.data;
    }
  },
  mounted() {
    console.log(this.reportData);
  }
};

**打了断点之后发现原因:在执行created然后发送请求的时候,mounted并不会等这次请求结束才去执行,而是直接就去执行,而此时data中的值还没有被赋值,所以拿不到。**于是,我手动加了延时试了一下

mounted() {
   setTimeout(() => {
     console.log(this.reportData);
   }, 1000);
 }

结果有值了:
在这里插入图片描述

解决:
1.加延时
2.将请求放在mounted中

mounted() {
    setTimeout(async () => {
      const { data: res } = await this.$http.get("reports/type/1");
      if (res.meta.status !== 200) {
        this.$message.error("获取报表失败!");
      }
      this.reportData = res.data;
      console.log(this.reportData);
    }, 1000);
  }
  1. 通过watch
    参考: https://blog.csdn.net/carlyll/article/details/105124084
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值