๐ Lifecycle Hooks
๐ Template Refs
ย ๐ ref vs reactive
ย ย 1. [๐reactive]
ย ย ๐กํ์
์ ํ์์(string,number,boolean ์๋จ),
ย ย ๐กobject ์๋ก์ด ๊ฐ์ผ๋ก replace์๋จ
ย ย ๐ก๊ตฌ์กฐ๋ถํดํด์ ๋ญ๊ฐ๋ฅผ ๋ชปํจ(original๊ฐ์)
ย ๐ keepAlive
๐ Vue concepts
ย ๐ class binding
ย ๐ Watchers
ย ย 1. watch(question, async(nV, oV) => {})
ย ย 2. watch(question, async(nV, oV) => {}, deep: true) : React to all changes on an object/array
ย ย 4. watchEffect() : ์ฆ์ ํจ์๋ฅผ ์คํํ๊ณ ์์กด์ฑ์ ๋ฐ์์ ์ผ๋ก ์ถ์ , ์์กด์ฑ๋ณ๊ฒฝ์ ๋ค์์คํ
ย ย ย 1) watch์ ์ฐจ์ด์ : watch(์ด์ ๊ฐ, ํ์ฌ๊ฐ), watchEffech(ํ์ฌ๊ฐ)๋ง ํ์, ๋ช
์์ ์ผ๋ก ๊ฐ์๋์์ ์ง์ x
const url = ref('https://...')
const data = ref(null)
watchEffect(async () => {
const response = await fetch(url.value)
data.value = await response.json()
})
ย ๐ computed
๐ Events
ย ๐ Component Props & Events

ย ย 1. Emits
ย ย ย 1. defineEmits
ย ย ย ย [์์์ปดํฌ๋ํธ]
<script setup>
const emit = defineEmits(['solved'])
const check = () => {
...
emit('solved', end-props.start) ๋๋ ํ
ํ๋ฆฟ์์
<input ... @change="$emit('solved', 100)" />
}
</script>
ย ย ย ย [๋ถ๋ชจ์ปดํฌ๋ํธ]
<script setup>
const summary = (time) => {
dashboard.time += time
}
<QuizItem ...@solved="summary" />
</script>
๐ General
ย โจ nextTick()
ย ย 1. ๊ฐ์: Vue๊ฐ Dom์ด patch๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ค
ย ย 2. ์์
watch(
() => props.isOpen,
async (isOpen) => {
if (isOpen) {
await nextTick(); // ๐ ์ฌ๊ธฐ!
activate();
titleInput.value?.focus();
} else {
deactivate();
}
},
);
๐ +Typescript

๐ ์ํ๊ด๋ฆฌ(Pinia)
