createEventDispatche
컴포넌트 간의 사용자 지정 이벤트를 보내기 위해 사용되는 기능입니다. Svelte에서는 이벤트 디스패처 (dispatcher)를 사용하여 자식 컴포넌트에서 발생한 이벤트를 부모 컴포넌트로 전달할 수 있습니다.
App.svelte
<script>
import Child from "./Child.svelte";
function eventHandler(e) {
console.log(e.detail.myName);
}
</script>
<Child on:event={eventHandler} />
부모 컴포넌트는 자식 컴포넌트에서 디스패치로 보낸 이벤트 이름과 이벤트 핸들러 함수을 연결하여 사용합니다.
Child.svelte
<script>
import { createEventDispatcher } from 'svelte';
export let value;
const dispatch = createEventDispatcher();
function update() {
dispatch("event", { myName: 'sebin'});
}
</script>
<button on:click={update}>
Child click!
</button>
자식 컴포넌트는 createEventDispatcher 함수를 호출하여 Dispatcher를 생성합니다. 해당 함수를 사용해 만들어진 컴포넌트는 버블링이 되지 않는다고 합니다.
dispatcher는 첫번째 매개변수로 이벤트 이름을 지정하고, 두번째 매개변수로는 이벤트 핸들러에 전달할 인자를 설정합니다.
결론적으로, dispatch를 사용하는 것은 Svelte에서 컴포넌트간의 통신을 더 명확하고 유연하게 만들어 줄 수 있으며, 특히 컴포넌트의 재사용성과 유지보수성을 높이는 데에 큰 도움이 됩니다.
(출처: Svelte 공식 문서 https://svelte.dev/docs/svelte#createeventdispatcher )