vue3中通过ref给子组件打标记,怎么拿子组件的数据,或者怎么执行子组件的方法并传递参数

16 篇文章 0 订阅
10 篇文章 1 订阅

一、vue3中实现拿子组件的数据,或者怎么执行子组件的方法并传递参数

问题:vue2的时候我们都可以直接通过ref标记一下组件,再通过 this.$refs[refName].init() 的方式去掉用 子组件的init方法 ,通过这样的方法还可以给 init这个方法传递参数。vue3中没有this之后怎么拿子组件的数据,或者怎么执行子组件的方法并传递参数呢?

vue3也是具备这个能力的:

1、也是需要给子组件打上 ref 标记 (不同与vue2的是,vue2直接添加属性 ref="refName", vue3除了添加属性 ref="refName" 之外还用通过 ref 去定义一下比如const refNode = ref() 

注意:必须是ref定义的,reactive定义标记是不行的

const refNode = ref()

2、子组件通过 defineExpose() , 暴露需要父级使用的方法以及数据(vue2是不需要这一步的)

如下图:

子组件通过 defineExpose()  暴露了 testData以及 init()

父级通过ref标记拿到子组件并掉用 init方法 

控制台打印的数据:

可以看到,lineChartsDom 上只有 init方法 以及 testData这个数据对象 ,并且init方法也执行了且拿到了父级穿下来的数据

提示:因为使用ref定义的标记,所以需要.value去拿,必须是ref定义的,reactive定义标记是不行的

假如我不暴露init方法:

控制台:

lineChartsDom就只有testData 数据对象了,并且父级调用了一个没有暴露的方法,找不到导致报错了

二、应用场景:

就比如我的子组件是是一个 echarts 数据都是通过父级穿下来的,但数据变化的时候,需要通知子组件重新渲染 echarts 视图(myChart.setOption(options);)

        方法一:通过watch 去监听 props 的变化再去更新echarts 视图

        方法二:就是可以通过这种方式,子组件定一个更新视图的方法,父级在每次调用后端接口成功拿到数据之后的这个时机,调用子组件的更新视图的方法去更新

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snows_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值