
! Vue는 DOM 업데이트를 비동기로 진행
데이터 변경
-> 큐를 열고 같은 이벤트 루프에서 발생하는 모든 데이터 변경을 버퍼에 담는다
(같은 watcher가 여러 번 발생시 한번만 푸시)
-> 다음 이벤트 루프(tick) : vue 대기열을 비우고 실제 랜더링 작업을 수행

<v-date-picker
class="v-date-picker"
:prop="yesterday"
v-model="selectedDate"
color="#0080ff"
header-color="#0080ff"
:weekday-format="getDay"
:month-format="getMonth"
:title-date-format="getMonthDay"
:header-date-format="getYearMonth"
:allowed-dates="allowedDates"
:min="yesterday"
:max="maxDay"
show-adjacent-months
:picker-date.sync="pickerDate"
@change="selectDate"
ref="picker"
>
</v-date-picker>
watch: {
pickerDate (newval, oldval) {
console.log(newval)
console.log(oldval)
// 날짜가 변경되면 실행할 함수
this.someFunction();
// -> DOM에서 클래스를 찾고 해당 클래스를 변경
},
},
-> 날짜 이동 버튼 클릭 (3월 -> 4월)
-> console.log(newval) : 2022-04
-> console.log(oldval) : 2022-03
! someFunction의 작업이 제대로 수행되지 않는다
-> 데이터는 변경되었지만 아직 랜더링은 이루어지지 않았기 때문
: $nextTick으로 DOM 업데이트 처리 콜백을 받아 사용
watch: {
pickerDate (newval, oldval) {
this.$nextTick(function () {
// DOM 업데이트 이후
// 날짜가 변경되면 실행할 함수
this.someFunction();
// -> DOM에서 클래스를 찾고 해당 클래스를 변경
});
},
},