千家信息网

vue3中非父子组件如何传值

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下vue3中非父子组件如何传值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!vue2中非父子组件的传值主要是通过事件总线,创建一个vue实例,通过在不同的组件中导入该
千家信息网最后更新 2025年01月20日vue3中非父子组件如何传值

小编给大家分享一下vue3中非父子组件如何传值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

vue2中非父子组件的传值主要是通过事件总线,创建一个vue实例,通过在不同的组件中导入该实例来实现非父子组件之间的通信行为。vue3提供了**provide**和**inject**属性,可以实现非父子组件之间的通信;假设有三个组件:App.vue(父级)、sub1(子级)、sub2(子级的子级):

App.vue

sub1.vue

sub2.vue

实现效果如下,可以看到是可以正常获取顶级组件中传递的值:

但是也会出现问题:

就是顶级组件要传递的值变化时,如何让它实现响应式呢?

如何在provide属性中通过this获取当前的实例呢?

这里就需要将provide属性书写为方法的形式,返回一个数组或者对象:

像上面这样写,虽然可以拿到this指向的实例下的数据,但是如何让它们形成依赖关系,实现响应式呢?对此我们需要对App.vue做如下的修改:

看完了这篇文章,相信你对"vue3中非父子组件如何传值"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0