Svelte

Svelte - Events

eddie0329 2020. 12. 29. 00:15
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ๋ก

  • Introduction
  • DOM events
  • DOM modifiers
  • Component Event
  • Conclusion
  • Reference

๐Ÿ“Œ Introduction

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ svetle์˜ events์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ DOM events

์ด์ „์— ํ•œ๋ฒˆ ๋‹ค๋ค˜๋“ฏ์ด :on์œผ๋กœ event๋ฅผ listen ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<script>
  const onClick = () => {
    console.log('HELLO');
  };
</script>

<button on:click={onClick}>HELLO</button>

๋˜ํ•œ inline์œผ๋กœ๋„ ํ• ์ˆ˜ ์žˆ์–ด์š”.

<button on:click={() => { console.log('HELLO') }}>HELLO</button>

๐Ÿ“Œ DOM modifiers

event modifiers์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

<button on:click|once={() => { console.log('HELLO') }}>HELLO</button>

์ด 7๊ฐ€์ง€ modifiers๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  1. preventDefault

-> handler๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— event.preventDefault()๊ฐ€ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

  1. stopPropagation

-> handler๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— event.stopPropagation()๊ฐ€ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

  1. passive

-> ํ„ฐ์น˜๋‚˜ wheel ์ด๋ฒคํŠธ์˜ ํผํฌ๋จผ์Šค๋ฅผ ํ–ฅ์ƒ ์‹œํ‚ต๋‹ˆ๋‹ค.

  1. nonpassive

-> passive๋ฅผ false๋กœ ์„ธํŒ… ํ•ฉ๋‹ˆ๋‹ค.

  1. capture

-> ์ด๋ฒคํŠธ ์บก์ณ๋ฅผ ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

  1. once

-> ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์ด๋ฒคํŠธ๋ฅผ ํ˜ธ์ถœ ์‹œํ‚ต๋‹ˆ๋‹ค.

7.self

-> ์—˜๋ฆฌ๋จผํŠธ์˜ ์ด๋ฒคํŠธ๋งŒ ์žก๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  modifiers๋Š” chain์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Component Event

์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถ€๋ชจ์—๊ฒŒ ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•ด์ค„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vue์—์„œ์˜ emit๊ณผ ๋น„์Šทํ•ด์š”.

<script>
  // MyButton.svelte
  import { createEventDispatcher } from 'svelte';
  const dispatch = createEventDispatcher();
  const onClick = () => {
    dispatch('click');
  };
</script>

<style>
  .my-btn {
    color: red;
  }
</style>

<button class="my-btn" on:click={onClick}>HELLO</button>
<script>
    import MyButton from "./components/MyButton.svelte";

    const onClickMyButton = () => {
        console.log("HELLO");
    };
</script>


<MyButton on:click={onClickMyButton}/>

๐Ÿ“Œ Conclusion

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ svelte์—์„œ์˜ event handling์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋˜๊ฒŒ vue์™€ ํก์‚ฌํ•˜๋‹ค๋Š” ๋А๋‚Œ์„ ๋งŽ์ด ๋ฐ›์•˜๋˜๊ฑฐ ๊ฐ™์•„์š”. ์ด์ œ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” vue์™€ ๋˜ ๋น„์Šทํ•œ bind์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์•ˆ๋…•~~๐ŸŽ‰

๐Ÿ“Œ Reference

๋ฐ˜์‘ํ˜•