반응형
목차
데이터 변화 감지하는 점은 동일하지만 용도가 다름
watch
데이터의 변화를 감지하고 원하는 로직을 수행하는데 사용
- 주로 데이터 변화 시 비동기적 로직 등 복잡한 로직 수행 시 사용됨
- 변경 전 데이터, 변경 된 데이터를 매개변수로 받아서 처리 가능
<div id="app">
<p>카운트: {{ count }}</p>
<button @click="increment">증가</button>
</div>
new Vue({
el: '#app',
data: {
count: 0
},
methods: {
increment() {
this.count++;
}
},
watch: {
//매개변수로 변경된 값, 변경 전 값을 받을 수 있음
count(newValue, oldValue) {
console.log('count가 변경되었습니다. 이전 값: ${oldValue}, 새 값: ${newValue}');
//ajax 로직 생략...
}
}
});
computed
기존의 데이터를 기반으로 새로운 데이터 생성/가공하는데 사용
- 자동 캐싱 지원, 중복 계산을 방지하고 성능 최적화
- 기존 데이터를 가공 후 복잡한 계산이 필요한 경우 사용
- 메소드처럼 사용하는게 아니라 데이터처럼 사용됨
<div id="app">
<p>반지름: <input type="number" v-model="radius"></p>
<p>원의 넓이: {{ circleArea }}</p>
</div>
new Vue({
el: '#app',
data: {
radius: 0
},
computed: {
circleArea() {
return Math.PI * this.radius * this.radius;
}
}
});
computed 속성을 이용한 동적 클래스 코드 작성
<div id="app">
<!-- class 바인딩에 computed return 값을 연결 -->
<p :class="errorTextcolor">Hello</p>
</div>
new Vue({
el: '#app',
data: {
isError: false
},
computed: {
errorTextcolor: function() {
// isError에 this. 안 붙이면 못 찾음
return (this.isError ? 'warning' : null);
}
}
});
isError의 값 변경 시 computed 속성에 의해 동적으로 클래스가 적용됨
반응형
'IT > development' 카테고리의 다른 글
[Vue.js] modal창 데이터 바인딩 안될 때 (2) | 2023.08.06 |
---|---|
[Vue.js] vue.js의 렌더링 방식과 기존 방식의 차이점(feat. ajax) (8) | 2023.07.30 |
[Vue.js] 싱글 파일 컴포넌트에서 axios 통신 (0) | 2023.07.29 |
[Vue.js] 싱글 파일 컴포넌트에서 event emit 속성 이용 (0) | 2023.07.29 |
[Vue.js] 싱글 파일 컴포넌트에서 props 속성 이용 (0) | 2023.07.29 |