mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

vue

Vue 반응성.

ref, reactive, computed, watch, Proxy 기반 반응성 시스템

Vue 3 반응성은 Proxy로 객체를 감싸고, 의존성 추적(dependency tracking) 으로 값이 바뀔 때 관련 UI만 다시 그립니다.

📘 핵심 API

API용도
ref원시값, 단일 값 반응형
reactive객체/배열 반응형
computed파생 상태, 캐시
watch / watchEffectside effect, 비동기
import { ref, reactive, computed, watch } from 'vue';

const count = ref(0);
const user = reactive({ name: 'mason' });
const double = computed(() => count.value * 2);

watch(count, (next) => {
  console.log(next);
});

🔄 동작

Vue 반응성 getter 추적과 setter 트리거

  1. ref/reactivereactive proxy 생성
  2. render/computed 실행 중 getter 접근 → 의존성 등록
  3. setter로 값 변경 → 관련 effect(렌더, watch, computed) 스케줄
  4. 다음 tick에 DOM patch
  • ref.value로 접근, template에서는 자동 unwrap
  • reactive객체 전체 교체 시 참조를 바꿔야 함 (Object.assign 또는 새 객체)
  • computed는 getter만, setter는 computed({ get, set })로 명시
  • React useState와 달리 mutable 객체를 그대로 수정 가능

🔗 참고 자료