Svelte事件转发

Svelte 事件转发

与 DOM 事件不同, 组件事件不会 冒泡(bubble) ,如果你想要在某个深层嵌套的组件上监听事件,则中间组件必须 转发(forward) 该事件。这种情况,我们有类似的App.svelte和 Inner.svelte 在 前面章节,但是现在多出一个 Outer.svelte来包含 <Inner/>。解决这个问题的方法之一是添加 createEventDispatcher 到 Outer.svelte中,监听其 message 事件,并为它创建一个转发程序:<script>

import Inner from './Inner.svelte';

import { createEventDispatcher } from 'svelte';

const dispatch = createEventDispatcher();

function forward(event) {

dispatch('message', event.detail);

}

</script>

<Inner on:message={forward}/>但这样书写似乎有些臃肿,因此 Svelte 设立了一个简写属性 on:message。 message 没有赋予特定的值得情况下意味着转发所有massage事件:<script>

import Inner from './Inner.svelte';

</script>

<Inner on:message/>