๋ฐ์ํ
๐ ๋ชฉ๋ก
- 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
๋ฐ์ํ
'Svelte' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Svelte - Iteration (0) | 2020.12.26 |
---|---|
Svelte - Logic (0) | 2020.12.26 |
Svelte - Reactivity (0) | 2020.12.26 |
Svelte - Basic (0) | 2020.12.26 |
Svelte - ์ค์น ๋ฐ ์คํ ๋ฐฉ๋ฒ (0) | 2020.12.26 |