# <script setup>
Vue 3
์คํฌ๋ฆฝํธ ์ ์ (script setup)์ ์ปดํฌ์ง์ (Composition API)์ ๋ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ฌธ๋ฒ์ ๋๋ค.
# setup()
์์ฑ๊ณผ <script setup>
๋น๊ต
์ปดํฌ๋ํธ์์ ์ธ์คํด์ค ์ต์
์์ฑ์ผ๋ก ์ปดํฌ์ง์
์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด setup()
์์ฑ์ ์ ์ํด์ผ ํฉ๋๋ค.
<template>
<div>{{ message }}</div>
<button @click="changeMessage">๋ณ๊ฒฝ</button>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
// data
const message = ref('Hello');
// methods
function changeMessage() {
message.value = 'Hi';
}
return { message, changeMessage }
}
}
</script>
์์ ๊ฐ์ด ์ปดํฌ๋ํธ ์์์ ์ปดํฌ์ง์
์ผ๋ก๋ง ์ปดํฌ๋ํธ์ ๋ก์ง์ ์์ฑํ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์คํฌ๋ฆฝํธ ํ๊ทธ์ setup
์ ์ถ๊ฐํด์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
<template>
<div>{{ message }}</div>
<button @click="changeMessage">๋ณ๊ฒฝ</button>
</template>
<script setup>
import { ref } from 'vue';
// data
const message = ref('Hello');
// methods
function changeMessage() {
message.value = 'Hi';
}
</script>
์ด ์ฝ๋๋ ์์์ ์ดํด๋ณธ ์ฝ๋์ ๊ฐ์ ์ฝ๋์
๋๋ค. ๋ฐ์์ฑ์ด ์ฃผ์
๋ message
๋ฐ์ดํฐ์ changeMessage()
ํจ์๋ ๋ณ๋๋ก ์ต์คํฌํธํ๊ฑฐ๋ ์ถ๊ฐ์ ์ธ ์์
์ ํ์ง ์์๋ ํ
ํ๋ฆฟ ํํ์์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. setup()
์์ฑ์ ์ ์ํ๋ฉด ๋งค๋ฒ ๊ทธ ์์์ ์ ์๋ ๋ฐ์ดํฐ์ ๋ฉ์๋ ๋ฑ์ ๋ฐํํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฒ๊ฑฐ๋ก์ด ์ ์ฐจ๋ฅผ ์ค์ฌ์ค ๊ฒ์ด์ฃ .
# ์ฃผ์ํ ์
<script setup>
์ ์ฌ์ฉํ ๋๋ ๋ฐ์์ฑ์ด ์ฃผ์
๋ ๋ฐ์ดํฐ์ ๊ทธ๋ ์ง ์์ ์ผ๋ฐ ๋ณ์๋ฅผ ์ ๊ตฌ๋ถํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ํฉ์๋ค.
<template>
<div>{{ message }}</div>
<button @click="changeMessage">๋ณ๊ฒฝ</button>
</template>
<script setup>
let message = 'Hello';
function changeMessage() {
message = 'Hi';
}
</script>
์ ์ฝ๋์์ message
๋ณ์๋ ๋ฐ์์ฑ์ด ์ฃผ์
๋์ง ์์ ์ผ๋ฐ ๋ณ์์
๋๋ค. let
์ผ๋ก ์ ์ธ๋์๊ธฐ ๋๋ฌธ์ ๋ณ์์ ๊ฐ์ ๋ฐ๊ฟ ์ ์์ฃ . ๋ณ๊ฒฝ ๋ฒํผ์ ๋๋ฌ changeMessage
๋ฉ์๋๊ฐ ์คํ๋๋ฉด message
๊ฐ์ Hello
๋ก ๋ฐ๊ฟ ๊ฒ๋๋ค.
์ค์ ๋ก ๋ฒํผ์ ๋๋ฌ๋ณด๋ฉด ์คํฌ๋ฆฝํฌ ๋ ๋ฒจ์์๋ message
์ ๊ฐ์ด ๋ฐ๋์ง๋ง ํ๋ฉด์๋ ๋ฐ๋ ๊ฐ์ด ํ์๋์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋์ํ๋ ์ด์ ๋ message
๊ฐ์ ๋ฐ์์ฑ์ด ์ฃผ์
๋์ง ์๊ณ ์ผ๋ฐ ๋ณ์๋ก ์ทจ๊ธ๋ ์ํ์์ ํ
ํ๋ฆฟ ํํ์์ ํ์๋์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋์ ํจ์๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์์ง๋ง ํ๋ฉด์ ๊ฐ์ ๋ฐ๋์ง ์์ฃ .
๋ง์ฝ ๊ฐ์ด ๋ฐ๋์์ ๋ ๋ฐ์์ฑ์ ์ํด ์ ์์ ์ผ๋ก ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ํ์ํ๊ฒ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํ๋ฉด ๋ฉ๋๋ค.
<script setup>
import { ref } from 'vue';
const message = ref('Hi')
function changeMessage() {
message.value = 'Hello'
}
</script>
์ด์ฒ๋ผ <script setup>
์ ๋ค๋ฃฐ ๋๋ ๋ฐ์์ฑ์ด ์ฃผ์
๋ ๋ฐ์ดํฐ์ ๊ทธ๋ ์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ตฌ๋ถํด ์ฃผ์ด์ผ ํฉ๋๋ค.
TIP
์ปดํฌ์ง์
์์ ๋ฐ์์ฑ์ด ์ฃผ์
๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ์์ฐ์ค๋ฝ๊ฒ let
์ด ์๋ const
๋ก ์ ์ธํ์ฌ ์ ์ดํ๊ฒ ๋ฉ๋๋ค. ์๋ํ๋ฉด const
๋ ํ๋ฒ ์ ์ธํ๋ฉด ๊ฐ์ ๋ฐ๊ฟ ์ ์์ง๋ง let
์ ์ ์ธํ ์ดํ์๋ ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ref
์ ๊ฐ์ด ๋ฐ์์ฑ์ ์ฃผ์
ํ๋ API์ ํน์ง์ ์ ์ธํ ๋ณ์์ด ๊ฐ์ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋๋ผ ๋ด์ฅ๋ .value
์ ๊ฐ์ ๋ฐ๊ฟ๋๋ค. ๋ฐ๋ผ์, let
์ ์ฐ๋ ๊ฒ๋ณด๋ค const
๋ฅผ ์ฐ๋๊ฒ ๋ ์์ ํฉ๋๋ค ๐