emit的用法

来源:3-18 Teleport - 瞬间移动 第二部分

Hania冲鸭

2023-01-02

老师你好,关于emit的用法逻辑我还是不太理解
context.emit向父组件抛出事件:

  setup(props, context) {
    const buttonClick = () => {
      context.emit('close-modal')
    }
    return { buttonClick }
  }
})

那么父组件里为什么这么写:

<modal :isOpen="modalIsOpen" @close-modal="onModalClose">My Modal!!!</modal>

这其中的逻辑是什么?
点击子组件中的按钮,触发buttonClick事件,然后向父组件抛出close-modal事件?在父组件中,onModalClose事件就相当于close-modal?
我有些混乱,麻烦老师解答下

写回答

1回答

张轩

2023-01-03

同学你好

事件对于一个组件是有重要的东西,因为有了事件父组件就可以特定的时刻完成特定的操作。

回到这段代码:

<modal :isOpen="modalIsOpen" @close-modal="onModalClose">My Modal!!!</modal>
@close-modal 是事件名称,和
context.emit('close-modal') 这个是一致的。

onModalClose 是事件的回调,是父组件中定义的一个函数。这个函数执行的时候事件被触发。


3
2
张轩
回复
Hania冲鸭
同学你好 你的理解是正确的
2023-01-04
共2条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程