vue3中子传父是否可以通过父组件传递更改函数来实现?

vue3中子传父是否可以通过父组件传递更改函数来实现?

今天突然意识到自己几乎没用到过vue3的emit,发现自己的父子通信都是通过props来实现的。想问一下子组件变更父组件的状态是否可以通过调用 props传过来的变更函数来实现,这样实现和用emit触发父组件中的事件在原理上是否有什么不同。感谢回答。


回答:

在对于你的场景中的效果实现上本质是没啥不同的(如果你用 option api,定义在 methods 中的函数是已经绑定了 this 的)。

其主要区别是在设计模式上,事件分发是一种观察者(发布/订阅)模式,而传递 props 更接近一种代理模式(我把我的方法的引用交给你,你需要用的时候直接调用即可);其中观察者模式中,一个发布者是可以对应多个订阅者的,也就是一个 emit 可以被多方监听(这也是其解耦和关键点),而代理模式往往是一对一,在一个子组件里只能收到一个父组件交过来的方法。


回答:

  1. 可以。
  2. 需要事先绑定 this
  3. 没什么特别大的缺点,但不建议这么做,因为这样耦合度会加深

以上是 vue3中子传父是否可以通过父组件传递更改函数来实现? 的全部内容, 来源链接: utcz.com/p/937326.html

回到顶部