2021. 8. 27. 17:19ใvue
Vue-Composition API
Vue์์๋ Option API๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋๋ ํจ์๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋ Composition API๋ฐฉ์์ ์ฌ์ฉํ๊ฑฐ๋ ๋ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ค.
Option API๋ฐฉ์์ ๋ป ๊ทธ๋๋ก Vue์์ ์ ๊ณตํ๋ ์ต์ ํ๋ํ๋๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋ฐํ๋ค. ์๋ฅผ ๋ค์ด data(), methods, computed์ ๊ฐ์ ๊ฒ์ฒ๋ผ ๋ง์ด๋ค.
๋ฐ๋๋ก Composition์ setup()์ด๋ผ๋ ๊ฒ ์์ ๋ชจ๋ ๊ฒ์ ์ ์ํด์ ์ฌ์ฉํ๋ค.
๊ทธ๋ผ ์ Composition API๋ฅผ ์ฌ์ฉํ ๊น?
์์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ Option API๋ฐฉ๋ฒ์ผ๋ก ์งํํ์ ๋ ์๊ด์ด ์๋ค.
ํ์ง๋ง ์กฐ๊ธ ๊ท๋ชจ๊ฐ ์ปค์ก์ ๋๋ ๋ฐ์ดํฐ์ ์ด๋์ถ์ ์ ํ๋ ค๋ฉด ์ผ์ผํ ์ฐพ์์ผํ๋ฉฐ ๋ง์ ๋ฐ์ดํฐ์ ๋ง์ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์คํฌ๋กค๋ ๋ง์ดํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊ธด๋ค.
์ฐ๋ฆฌ๋ ์ด ๋ Composition์ ํ๋ฉด ๋ฐ์ดํฐ์ถ์ ์ด ์ฉ์ดํด์ง๋ค.
export default {
setup() {
let age ="10";
let name ="minsu";
};
return {age, name};
}
์ฌ๊ธฐ์ ์ค์ํ ์ ์ let age ="10";์์ age๋ ๋ฐ์ํ์ด ์๋ ์ํ์ด๋ค. ์ฆ ์ซ์๋ฅผ ๋ฐ๊พธ๋ฉด ๋ฐ๋ก๋ฐ๋ก ๋ฐ์ํด์ ํํ์ด์ง์ ์ ์ฉ์ด ์๋๋ค. ๊ทธ๋ ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ "ref"๋ "reactive"๋ฅผ ์ฌ์ฉํ๋ค.
ref VS reactive
ref๋ String์ด๋ Number์ ๊ฐ์ ์์ํ์ ๋ ๋ฐ์ํ์ผ๋ก ๋ฐ์ ์ ์๋ค.
reactive๋ ์์ํ์ ์ ๋ฐ์ํ์ผ๋ก ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ณดํต Array๋ Objectํ์๋ง ๋ฐ์ ์ ์๋ค.
๊ทธ๋์ ์ด์์ด๋ฉด ref๋ก ํต์ผํ๋ ๊ฒ ๊ด๋ก์ ์ผ๋ก ์ข๋ค๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋ผ ์ด์ ์ฌ์ฉ๋ฒ์ ์์๋ณด์.
import { ref } from "vue";
export default {
name: "HOME",
setup() {
const person = ref({ name: "jisu", age: 25 });
const Click = () => {
person.value.age = 30;
};
return { person, handleClick };
}
};
๋จผ์ vue๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ถํฐ ref๋ฅผ ๊ฐ์ ธ์จ ํ setup์ ๋๊ฐ์ด ์ ์ํด์ค๋ค.
ref์๋ค๊ฐ ๊ฐ์ ์ ์ฅํด๋จ๊ธฐ ๋๋ฌธ์ value๋ผ๋ ์์ฑ์ ํ๋ฒ ๊ฑฐ์น๊ณ ์ค์ ์์ฑ์ ์ ๊ทผํด์ผํ๋ค.
person.age๊ฐ ์๋ person.value.age์ฒ๋ผ ๋ง์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ๋ฐ์ํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
'vue' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Vue - ์ฌ์ฉ์ ์ง์ directive (0) | 2022.03.02 |
---|---|
Vue-firebase ํ๋ก์ ํธ ์์ฑํ๊ธฐ, ์น ํธ์คํ (0) | 2021.08.29 |