setup() 与 created()

setup() 与 created()

老师视频中讲到 setup() 相当于 beforeCreate() 和 created() ,因此无法获取实例的data数据

但是根据生命周期图知道 created() 中数据已经进行了初始化, 可以获取data中的数据, 我也试了一下,确实可以, 但为什么setup() 不行

<template>
  <p>get instance</p>
</template>

<script>
import { onMounted, getCurrentInstance, onBeforeMount } from "vue";

export default {
  name: "GetInstance",
  data() {
    return {
      x: 1,
      y: 2,
    };
  },
  setup() {
    console.log("this1", this);

    onBeforeMount(() => {
      console.log("this in onBeforeMount", this);
      console.log("x", instance.data.x);
    });
    onMounted(() => {
      console.log("this in onMounted", this);
      console.log("x", instance.data.x);
    });

    const instance = getCurrentInstance();
    console.log("instance", instance);
  },
  created() {
    console.log("x in created", this.x);
  },
  mounted() {
    console.log("this2", this);
    console.log("y", this.y);
  },
};
</script>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,严格来讲,setup是在beforeCreate之前执行的函数,可以测试一下:

https://img1.sycdn.imooc.com//climg/651fbd0a09c66dc606080502.jpg

https://img1.sycdn.imooc.com//climg/651fbd150914009e10280346.jpg

数据是在created阶段才能获取,setup阶段比created早,所以获取不到data中的数据。

一般来说,简单记忆成“setup是beforeCreate、created的合集”就行了。极个别情况,可以通过打印,看看它们的实际执行顺序再写逻辑。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师