1. computed (계산된 속성)

const count = ref(1);
const double = computed(() => count.value * 2); // count가 바뀔 때만 재계산됨



2. watch (감시)

// 단일 감시
watch(count, (newVal, oldVal) => { ... });

// 동시 감시
watch([count, name], ([newCount, newName], [oldCount, oldName]) => { ... });



3. Reactive 객체 감시와 Deep 옵션

const state = reactive({ user: { age: 20 } });
watch(() => state.user, (val) => { ... }, { deep: true });



4. Immediate 옵션

watch(source, (val) => { ... }, { immediate: true });



5. watchEffect (계산 및 감시)




4. 도구별 비교 및 선택 가이드

구분 computed watch watchEffect
목적 새로운 값 산출 (결과값 반환) 특정 상태 변화에 따른 로직 실행 의존성 기반의 자동 로직 실행
캐싱 지원 (성능 최적화) 지원 안 함 지원 안 함
실행 시점 참조될 때 (Lazy) 명시된 타겟이 바뀔 때 즉시 실행 + 의존성 바뀔 때
권장 상황 템플릿 내 복잡한 연산 비동기 호출, 외부 라이브러리 연동 다수의 데이터를 참조하는 설정 로직



5. computed 감시하기

const isAdult = computed(() => user.age >= 20);

// 계산된 결과(isAdult)가 바뀔 때 로그 전송
watch(isAdult, (newVal) => {
  if (newVal) console.log("성인 인증 완료");
});



6. computed, watch, watchEffect 최종 요약