반응형
비동기로 데이터를 가져와 테이블을 생성하고 같은 이름끼리 병합하는 함수를 생성하여 사용하였는데 어떻게 된 것인지 data를 변경하고 함수를 사용하였지만 생성한 함수가 제대로 동작하지 않음.
원인으로는 data가 변경되었지만 DOM에는 반영되지 않은 상태에서 rowsapn을 변경하려는 동작을하여 제대로 동작을 하지 못하였습니다. 이후 알게 된 것이지만 Vue는 DOM 업데이트를 비동기로 하여 컴포넌트는 즉시 재 렌더링되지 않습니다. 큐가 플러시 될 때 다음 “tick” 에서 업데이트됩니다.
해결 방법으로 DOM업데이트후 호출하는 $nextTick() 함수를 사용하여 DOM업데이트를 하고 난 뒤 병합하는 함수를 호출하는 방식으로 처리하였습니다.
사용방법
Vue.component('example', {
template: '<span>{{ message }}</span>',
data: function () {
return {
message: '갱신 안됨'
}
},
methods: {
updateMessage: function () {
this.message = '갱신됨'
console.log(this.$el.textContent) // => '갱신 안됨'
this.$nextTick(function () {
console.log(this.$el.textContent) // => '갱신됨'
})
}
}
})
반응형에 대해 깊이 알아보기 — Vue.js
Vue.js - 프로그레시브 자바스크립트 프레임워크
kr.vuejs.org
반응형
'개발 > VUE' 카테고리의 다른 글
Vue - watch를 이용한 입력 값 제한 (0) | 2020.07.27 |
---|---|
Vue - router params 새로고침 후 값이 없어질때 (0) | 2020.07.27 |
Vue - moment.js 날짜 계산 사용하는 법 (0) | 2020.06.19 |
Vue - checkbox 선택한 값 가져오기 (0) | 2020.06.12 |
Vue - Select 태그 선택한 값 Value 가져오기 (0) | 2020.06.10 |