| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- const
- eruda
- dex모드
- 티스토리챌린지
- 오블완
- async
- composition API
- asynchronus
- computed
- ref
- 템플릿 문법
- mobile dev tools
- vue
- es6
- setup 함수
- synchronus
- vitre
- hoisting
- Component
- composition api
- watch
- 앱 빌드
- tdz
- let
- await
- promise
- watchEffect
- html 엔티티
- drective
- reactivity
- Today
- Total
uxtry
vue: 반응형 기초(reactivity) 본문

Vue3의 반응형(Reactivity) 시스템은 컴포넌트 상태가 변경될 때마다 UI를 자동으로 업데이트하여, 동적인 사용자 인터페이스를 쉽게 구현할 수 있도록 돕습니다. 반응형 시스템의 기초는 ref, reactive, computed, 그리고 watch와같은 API를 사용하는 것입니다.
1.ref
ref는 원시 데이터 타입(문자열, 숫자, 블리언 등)을 반응형으로 만드는데 사용합니다. ref를 사용하면 값이 바뀔 때 Vue가 자동으로 UI를 업데이트 합니다. ref로 정의된 변수의 값을 읽거나 쓸 때는 .value를 통해 접근합니다.
<script setup>
import { ref } from 'vue';
const count = 0;
function increment(){
count.value++;
}
</script>
<template>
<div>
<p>카운트: {{ count }}</p>
<button @click="increment">증가</button>
</div>
</template>
★ Vue SFC Playground 코드 실행 →
이 코드에서 count는 반응형 변수로 설정되었고 count.value의 값이 변경될 때마다 UI가 자동으로 업데이트됩니다.
2.rective
reactive는 객체나 배열과 같은 복잡한 데이터를 반응형으로 만듭니다. ref와 는 달리 reactive로 생성한 객체의 프로퍼트는 .value없이 바로 접근할 수 있습니다.
<script setup>
import { reactive } from 'vue';
const person = reactive({
name: "Alice",
age: 25
});
function increaseAge() {
person.age++;
}
</script>
<template>
<div>
<p>이름: {{ person.name }}</p>
<p>나이: {{ person.age }}</p>
<button @click="increaseAge">나이 증가</button>
</div>
</template>
★ Vue SFC Playground 코드 실행 →
여기서 person.age가 변경되면 Vue가 이를 감지하여 UI를 자동으로 업데이트합니다.
3.computed
computed는 다른 반응형 데이터에 의존하는 계산된 속성입니다. 종속된 반응형 데이터가 변경될 때마다 새 값을 다시 계산하므로, 불필요한 연산을 줄일 수 있습니다.
<script setup>
import { ref, computed } from 'vue';
const price = ref(100);
const quantity = ref(2);
const totalPrice = computed(() => price.value * quantity.value);
</script>
<template>
<div>
<p>가격: {{ price }}</p>
<p>수량: {{ quantity }}</p>
<p>총 가격: {{ totalPrice }}</p>
</div>
</template>
★ Vue SFC Playground 코드 실행 →
여기서 price나 quantity가 변경되면 totalPrice가 자동으로 다시 계산되고, UI도 업데이트됩니다.
4. watch
watch는 반응형 데이터나 계산된 속성의 변화를 감지하고 특정 작업을 수행하고 싶을 때 사용합니다. 비동기 작업이나 데이터가 변경될 때 수행해야 할 로직에 적합합니다.
<script setup>
import { ref, watch } from 'vue';
const name = ref("Alice");
const nameTxt = ref("");
watch(name, (newName, oldName) => {
nameTxt.value = `이름이 "${oldName}"에서 "${newName}"으로 변경되었습니다.`;
});
</script>
<template>
<input v-model="name" placeholder="이름을 입력하세요"/>
<p>{{ nameTxt }}</p>
</template>
★ Vue SFC Playground 코드 실행 →
여기서 name값이 변경될 때마다 watch에서 정의한 콜백이 실행됩니다.
5. watchEffect
watchEffect는 반응형 데이터를 의존성으로 사용하여, 그 데이터가 변경될 때마다 즉시 실행됩니다. Vue가 의존성을 자동으로 추적하므로 특정 데이터를 명시할 필요가 없습니다.
<script setup>
import { ref, watchEffect } from 'vue';
const count = ref(0);
const countNum = ref("0");
watchEffect(() => {
countNum.value = `count 값: ${count.value}`
});
</script>
<template>
<button @click="count++">증가</button>
<p>{{ countNum }}</p>
</template>
★ Vue SFC Playground 코드 실행 →
여기서 count의 값이 바뀔 때마다 watchEffect 내의 코드가 실행됩니다.
요약
- ref: 원시 데이터 타입을 반응형으로 만드는데 사용.
- reactive: 객체와 배열을 반응형으로 만듦.
- computed: 계산된 속성으로, 종속된 데이터가 변경될 때 자동으로 재계산.
- watch: 특정 반응형 데이터가 변경될 때 실행할 코드를 정의.
- watchEffect: 의존성을 자동으로 추적하여 데이터 변경 시 코드 실행.
이렇게 Vue의 반응형 시스템을 사용하면, 코드가 더 직관적이고 동적으로 UI를 업데이트할 수 있어 개발이 훨씬 쉬워집니다.
'Vue.js 3 주요 문법 (vue:)' 카테고리의 다른 글
| vue: 목록 렌더링 (v-for) (0) | 2024.11.17 |
|---|---|
| vue: Computed (0) | 2024.11.13 |
| vue: 템플릿 문법 (0) | 2024.11.11 |
| vue: setup 함수 (0) | 2024.11.08 |
| vue: Composition API 간략설명 (0) | 2024.11.08 |