Vue에서 중첩된 변경 사항을 확인하는 방법
7050 단어 vuejavascriptwebdevtutorial
이것은 간단한 데이터 세트에 대해서는 잘 작동하지만 한 수준보다 더 깊은 데이터를 가지기 시작하면 변경 사항을 제대로 관찰하기가 더 어려워집니다.
Vue에서 중첩된 데이터 변경 사항 확인
이 문제에 대해 조금 이해하려면 감시자가 Vue에서 작동하는 방식을 이해해야 합니다. Vue는 얕은 변경 사항만 감시합니다. 예를 들어 아래에서
count
및 console.log
해당 변경 사항을 감시합니다.<script>
export default {
data() {
return {
count: 1
}
},
watch: {
count(data) {
console.log(data);
}
}
}
</script>
<template>
<h1>{{ count }}</h1>
<button @click="++this.count">
Click Me
</button>
</template>
사용자가 버튼을 클릭할 때마다 우리
++this.count
와 감시자는 count
의 변경 사항을 감시합니다. 그런 다음console
데이터를 기록하므로 새 카운트 값을 볼 수 있습니다. 즉, 버튼을 클릭할 때마다 count 값이 콘솔 로그에 표시됩니다.그러나 얕은 변경 사항은 Vue가 해당 속성 값의 변경 사항만 확인함을 의미합니다. 한 수준 이상의 데이터가 있는 경우 Vue는 업데이트를 확인하지 않습니다. 예를 들어, 아래의
count.number
업데이트는 count
에 대한 감시자를 트리거하지 않습니다. Vue는 단순히 count
보다 더 깊은 변경 사항을 확인하지 않기 때문입니다.data() {
return {
count: {
number: 1,
type: 'number'
}
},
watch: {
// This doesn't get triggered when count.number!
count(data) {
console.log(data);
}
}
}
대신 어떤 요소가 변경되고 있는지 구체적으로 언급해야 합니다. 감시자를
count.number
를 감시하도록 변경하여 위의 count.number
의 변경 사항을 계속 감시할 수 있습니다.data() {
return {
count: {
number: 1,
type: 'number'
}
},
watch: {
// This gets triggered when count.number changes!
"count.number" : function(data) {
console.log(data);
}
}
}
위의 방법을 사용하면 속성 내 속성의 변경 사항을 쉽게 확인할 수 있으므로 적절한 감시자를 실행할 수 있지만 지저분해질 수 있습니다. 단순히
count
변경 사항을 확인하려면 deep 속성을 사용해야 합니다.깊은 속성 사용
deep 속성은 모든 감시자에 추가할 수 있으며 Vue가 특정 데이터 속성 내의 모든 변경 사항을 감시하도록 강제합니다. 이는
watcher
를 약간 다르게 작성해야 함을 의미합니다.data() {
return {
count: {
number: 1,
type: 'number'
}
},
watch: {
count: {
handler(data) {
console.log(data);
},
deep: true
}
}
}
이제
count
내의 속성이 변경될 때마다 count
감시자가 실행됩니다. 이번에는 console.log(data)
전체 count
개체가 콘솔 로그에 기록됩니다. 즉 { number: 1, type: 'number' }
입니다.이것은 속성 내에서 특정 속성을 대상으로 지정하는 것보다 훨씬 쉽지만 비용이 많이 듭니다. Vue는 매번 각 속성을 거쳐야 하므로 매우 큰 개체에 심각한 성능 문제가 발생할 수 있습니다. 따라서 알려진 작은 크기의 개체가 있는 경우에만 사용하십시오. 다른 상황에서는
count.number
와 같은 특정 속성을 대상으로 지정하십시오.
Reference
이 문제에 관하여(Vue에서 중첩된 변경 사항을 확인하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smpnjn/how-to-watch-for-nested-changes-in-vue-25b7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)