当为Vue中的data赋值computed计算属性后,出现undefined的原因

在Vue组件中,当尝试为data赋值一个computed计算属性时,发现页面未显示且打印data为undefined。原因是Vue组件的初始化顺序:props -> methods -> data -> computed -> watch。由于computed的初始化在data之后,所以在data初始化时,对应的computed属性还未定义,导致打印结果为undefined。解决办法是正确理解并遵循Vue的数据和计算属性的生命周期。
摘要由CSDN通过智能技术生成

今天遇到一个问题,当我给data数据初始化一个computed计算属性时,在页面上竟然没有显示,放代码

<template>
  <div class="container">
    <div>num1:{
   {
   num1}}</div>
    <div>num2:{
   {
   num2}}</div>
    <div>data中的数据{
   {
   sum}}</div>
  </div>
</template>

<script>
export default {
   
  data() {
   
    return {
   
      num1:2,
      num2:10,
      sum:this.result
    };
  },
  computed:{
   
    result(){
   
      return this.num1+this.num2
    }
  }
};
</script>

在这里插入图片描述
console.log(this.data)一下,结果是undefined
在这里插入图片描述
查了一下资料,原来是跟Vue组件数据初始化顺序有关,我们可以看一下源码
new Vue的执行顺序
在这里插入图片描述
往下找,可以找到在这个initMixin函数里,定义了_init的方法

function initMixin 
  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值