首页 > 其他 > 详细

Svelte 中多层组件事件转发

时间:2021-09-10 02:37:14      阅读:23      评论:0      收藏:0      [点我收藏+]

正文

现在组件的层级是:<Father> 内嵌 <Child><Child> 内嵌 <GrandChild>,如果此时 Father 组件中定义的一个事件监听函数要在 <GrandChild> 组件中触发执行,则必定会经过中间组件:<Child>,下面是 <Child> 组件内的常规设置:

<script>
  import GrandChild from "./GrandChild.svelte";
  import { createEventDispatcher } from "svelte";
  const emit = createEventDispatcher();
  const messageHandler = (e) => {
    emit("message", e.detail);
  };
</script>

<!-- 这是例子需要演示的 -->
<GrandChild on:message={messageHandler} />

 

以上代码中定义的方法只是为了做个中转,这显得较为冗余,所以 Svelte 做了简化,如下:

<script>
  import GrandChild from "./GrandChild.svelte";
</script>

<GrandChild on:message />

 

感觉瞬间清爽了许多,有木有!!

注意

DOM 事件也可以使用这一特性:<button on:click>click</button>

但前提是该组件上绑定了一个同名的 DOM 事件监听函数:<p>child: <Child on:click={clickHandler} /></p>

参考

https://www.sveltejs.cn/tutorial/event-forwarding

Svelte 中多层组件事件转发

原文:https://www.cnblogs.com/aisowe/p/15245528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!