[ํ•™์Šต]Vue.js

์ด๋™ํ˜„ยท2025๋…„ 4์›” 13์ผ
0

๐Ÿ“• 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

ย  ย  3. watch(question, async(nV, oV) => {}, immediate: true) : Run watcher immediately

ย  ย  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();
    }
  },
);

ย  ย  => (nextTick์—†์„์‹œ)titleInput.value๋Š” null์ด๊ฑฐ๋‚˜ ์•„์ง DOM์— ์—†๋Š” ์ƒํƒœ์—ฌ์„œ focus()๊ฐ€ ์‹คํŒจํ•จ.

๐Ÿ“• +Typescript

๐Ÿ“• ์ƒํƒœ๊ด€๋ฆฌ(Pinia)

profile
UnusualFrontendDeveloper

0๊ฐœ์˜ ๋Œ“๊ธ€