Vue.js에서 watch 속성은 무엇인가요?
_____A1: watch 속성은 Vue 인스턴스나 컴포넌트 내에서 특정 데이터(reactive data)의 변화를 감지하고, 그 변화가 발생할 때마다 지정한 콜백 함수를 실행하도록 하는 옵저버(감시자) 역할을 합니다.
Q2: watch를 언제 사용하나요?
A2: 데이터가 변할 때마다 비동기 작업을 하거나, 데이터 변화를 기반으로 부가적인 로직을 실행해야 할 때 사용합니다. 예를 들어, 사용자가 입력한 값을 감지해 API를 호출하거나, 데이터 변화를 감지해 컴포넌트 상태를 업데이트하는 경우에 적합합니다.
Q3: watch와 computed의 차이는 무엇인가요?
A3: computed는 종속된 데이터가 변경될 때 계산된 값을 반환하며, 주로 템플릿 렌더링에 사용됩니다. 반면, watch는 데이터 변경을 감지해 부수 효과(side effect)를 실행하는 데 사용됩니다. 즉, computed는 값의 계산에, watch는 변화에 따른 동작에 초점을 맞춥니다.
Q4: watch 속성 사용법은 어떻게 되나요?
A4: Vue 인스턴스나 컴포넌트의 옵션에 `watch` 객체를 추가하고, 감시할 데이터 이름을 키로, 콜백 함수를 값으로 작성합니다.
```js
new Vue({
data() {
return { count: 0 }
},
watch: {
count(newVal, oldVal) {
console.log(`count가 ${oldVal}에서 ${newVal}로 변경되었습니다.`);
}
}
})
```
Q5: watch 콜백 함수에서 어떤 매개변수를 받을 수 있나요?
A5: 첫 번째 매개변수는 변경된 후의 새로운 값(newVal), 두 번째 매개변수는 변경되기 전의 이전 값(oldVal)입니다.
Q6: deep 옵션이란 무엇인가요?
A6: 객체나 배열 내부의 중첩된 속성까지 감지하려면 watch 옵션에 `{ deep: true }`를 추가해야 합니다. 이 옵션이 없으면 객체나 배열 전체가 변경될 때만 감지합니다.
```js
watch: {
user: {
handler(newVal) { /* 내부 속성 변화 감지 가능 */ },
}
}
```
Q7: immediate 옵션은 무엇인가요?
A7: immediate 옵션은 watch가 등록되자마자 즉시 콜백 함수를 호출하도록 하는 설정입니다. 초기값에 대한 작업이 필요할 때 유용합니다.
```js
watch: {
count: {
handler(newVal) { /* 콜백 로직 */ },
immediate: true
}
}
```
Q8: 여러 데이터 속성을 동시에 감시할 수 있나요?
A8: watch 객체 내에 감시할 각 속성마다 별도의 콜백 함수를 작성해야 합니다. 여러 데이터 변화를 한 함수에서 처리하려면 computed 속성 등을 활용하거나, 복합 데이터(객체, 배열)를 감시해야 합니다.
Q9: Vue 3에서의 watch 사용법은 어떻게 달라졌나요?
A9: Vue 3에서는 Composition API를 도입하며, `watch` 함수가 별도로 제공됩니다. reactive 변수나 ref를 직접 감시할 수 있으며, 사용법이 함수 호출 방식으로 변경되었습니다.
```js
import { ref, watch } from 'vue';
const count = ref(0);
watch(count, (newVal, oldVal) => {
console.log(`count changed from ${oldVal} to ${newVal}`);
});
```
Q10: watch를 사용할 때 주의할 점은 무엇인가요?
A10: 자주 변경되는 데이터를 과도하게 감시하면 성능 저하가 발생할 수 있으므로, 필요한 데이터에만 watch를 적용하고, deep 감시는 꼭 필요한 경우에만 사용하는 것이 좋습니다. 또한 비동기 콜백 내에서 상태 관리에 주의해야 합니다.
작성자:
김서진 [비회원]
| 작성일자: 1년 전
2024-09-14 17:14:40
조회수: 126 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 126 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.