请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

怎么这次在slot中又不用mitt了?。。。

结合上一篇我发的提问“mitt究竟什么时候使用?”,已经有5种父子组件传递数据的方法了。
1.使用emit,组件内用emit发送事件,父组件用@事件的方式接收
2.使用emit,用$on方式接收,但是已废弃?
3.使用mitt,用emitter.emit发送事件,使用emitter.on接收事件
4.使用ref调用子组件的方法
第五种就是下面图片的这种新的方式,我已经彻底被搞懵了,然后又回去了视频5-10看了一遍,然后又看了问答区,这篇问答应该跟第五种方法差不多链接描述
图片描述
我已经不知道什么时候用什么方法了,好像都可以,又不知道优先用哪个好了。。。。咋办呢?

正在回答 回答被采纳积分+3

1回答

张轩 2022-05-12 10:36:48

同学你好

两个问题一起回答欧,先分大类,针对不同的场景,选择不同的方案:

先是 子到父组件通信

1 第一种方法是 vue 标准的,推荐的第一选择,子组件使用 emit,父组件使用 on 来接受,在任何情况下都要考虑它为第一选择。这个方向是从子组件到父组件。

再是 父组件要获取子组件的实例,然后进行一些操作,(最常见的是调用子组件上的一些函数)

2 使用 ref,这样父组件可以拿到子组件的实例

3 mitt 是一个事件发射器,是第三方库,它出现是因为上一种 ref 方式没法解决的问题,那就是当有 slot 的时候,我们没法在 slot 上设定 ref,从而需要借助第三方库使用 pub,sub 的方式

4 $on 其实就是 vue2 原来内部提供的一个类似 mitt 的东西,现在废弃掉了,直接不用记了。

最后是 scoped slot ,

单独把它拿出来,因为它的功能和场景二是不一样的,它的作用是让使用组件的时候,可以获取组件中一些对应的值,从而可以进行自定义(目的就是使用组件的时候,可以更好的自定义一些展示),slot 中一般仅限于一些变量,但是没法像场景二那样丰富,比如调用函数等等。

2 回复 有任何疑惑可以回复我~
  • 提问者 zippen #1
    第一种方法应该是用@接收吧?mitt才是使用on噢?不知道我说的对不对,可能你写错了?按照你的文字描述来看
    回复 有任何疑惑可以回复我~ 2022-05-12 10:45:47
  • 张轩 回复 提问者 zippen #2
    对 @符号 笔误
    回复 有任何疑惑可以回复我~ 2022-05-12 11:27:50
  • Best_Coder_LCN 回复 提问者 zippen #3
    回复 zippen:@ 是 v-on 的 简写,所以第一种称为 on 来接收也没毛病。
    回复 有任何疑惑可以回复我~ 2024-11-20 17:57:24

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信