Svelte

Svelte - Props

eddie0329 2020. 12. 26. 21:57
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ๋ก

  • Introduction
  • Declaring Props
  • Spread Props
  • $$props and $$restProps
  • Conclusion
  • Reference

๐Ÿ“Œ Introduction

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ svelte์—์„œ props๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ๋Š”์ง€์— ๊ด€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Declaring Props

์ด๊ฑด ์ข€ ์ฒ˜์Œ์— ๋‹นํ™ฉ์Šค๋Ÿฌ์šด ๋ฐฉ์‹์ด๊ธดํ•ฉ๋‹ˆ๋‹ค๋งŒ export๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<script>
  // ์ด๋ ‡๊ฒŒ props๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
  export let title;
  // ์ด๋ ‡๊ฒŒ ๊ธฐ๋ณธ props ๋ฅผ ์„ธํŒ…ํ•ด์ค„์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  // export let title = 'Eddie'
</script>

<h1>{title}</h1>
<!-- ์ด๋ ‡๊ฒŒ title์„ ๋„ฃ์–ด์ค„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  -->
<MyHeader title={'Eddie'} />

๐Ÿ“Œ Spread Props

๋งŒ์•ฝ ์ด๋Ÿฐ props๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณผ๊ฒŒ์š”.

<script>
const info = {
        name: "eddie",
        age: 20,
        sex: "male",
    };
</script>

<MyInfo name={info.name} age={info.age} sex={info.sex}/>

์ด๋Ÿฐ์‹์œผ๋กœ ์ถ•์•ฝ์„ ํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

<MyInfo {...info} />

๐Ÿ“Œ $$props and $$restProps

$$props๋Š” ๋ชจ๋“  props์˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

<script>
  // MyInfo.svelte
  export let name;
  export let age;
  export let sex;

  // โญ๏ธ ์ด๋ ‡๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  $: UpperName = $$props.name.toUpperCase();
</script>

$$restProps๋Š” export๋กœ ์„ ์–ธ๋˜์–ด์ง€์ง€ ์•Š์€ props๋งŒ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

<script>
// App.svelte
const info = {
        name: "eddie",
        age: 20,
        sex: "male",
    };
</script>

<MyInfo name={info.name} age={info.age} sex={info.sex} aria-label="my-info" />
<script>
  // MyInfo.svelte
  export let name;
  export let age;
  export let sex;

  // โญ๏ธ ์ด๋ ‡๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  console.log($$restProps) // { aria-lable="my-info"}
</script>

๐Ÿ“Œ Conclusion

์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ํ•œ๋ฒˆ props์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๋‹นํ™ฉ์Šค๋Ÿฌ์šด ๋ฌธ๋ฒ•์ด ๋“ฑ์žฅํ•˜์—ฌ ๋‹นํ™ฉ์Šค๋Ÿฝ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•˜๊ฒ ์ฃ ? ๊ทธ๋Ÿผ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” logic์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ์•Œ์•„๋ณผ๊ฒŒ์š”. ๊ทธ๋Ÿผ ์•ˆ๋…•~

๐Ÿ“Œ Reference

๋ฐ˜์‘ํ˜•