vue v-if导致父组件$ref引用子组件方法undefined

// An highlighted block
<ul>
      <li>
        <div v-if="menus&&menus.includes('销售')" id="sale">
          <sale ref="sale"></sale>
        </div>
      </li>
      <li>
        <div v-if="menus&&menus.includes('客服')" id="cus">
          <custome ref="cus"></custome>
        </div>
      </li>
</ul>

methods:{   //methods里面调用子组件方法
	// 页面 滚动 事件
    handleScroll() {
    	if (*****) {
              this.$nextTick(() => {
                this.$refs['***']].getArea(); //子方法
              });
         }
	}
}

mounted() {
	if(this.$refs.sale){ // 1种  ***判断有没有再使用nextTick***
      this.$nextTick(()=> {
        this.$refs.sale.getArea();
      })
    }

	window.addEventListener("scroll", this.handleScroll, true); //2种
}

在这里插入图片描述
在这里插入图片描述

总结: ref和v-for v-if一起使用会出现问题 ,undefined绝大多数情况是因为DOM节点渲染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值