vue 에서 watch 에서 대상 속성 변 화 를 감지 하지 못 하 는 해결 방법

1779 단어 vuewatch대상 속성
머리말
vue 개발 과정 에서 문 제 를 발견 했다.vue.$data 에서 대상 의 속성 을 바 꾸 면 watch 는 변 화 를 관측 할 수 없 지만 대상 의 속성 은 변화 가 있다.이..믿 기지 가 않 아!
본문

<template>
 <div>
  <dl>name: {{option.name}}</dl>
  <dl>age: {{option.age}}</dl>
  <dl>
   <button @click="updateAgeTo25">update age with 25</button>
  </dl>
 </div>
</template>

<script>
export default {
 data () {
  return {
   option: {
    name: "isaac",
    age: 24
   }
  }
 },
 watch: {
  option(val) {
   console.log(val)
  }
 },
 methods: {
  updateAgeTo25() {
   this.option.age = 25
  }
 }
}
</script>


결과 와 같이 option.age 는 업데이트 되 었 으 나 watch 의 option 함 수 는 트리거 되 지 않 았 습 니 다.
vue 의 watch 갈고리 가 그렇게 닭 갈비?안 믿 어.
심층 시계

 ...
 watch: {
  option: {
   handler(newVal) {
    console.log(newVal);
   },
   deep: true,
   immediate: true
  }
 },
 ...
심층 watch 가 필요 하면 deep 속성 을 오픈 해 야 합 니 다


결과 와 같다.
또한,age 가 변 하지 않 기 전에 option 을 출력 하 는 것 을 발견 할 수 있 습 니 다.이것 은 immediate 속성 을 열 고 true 로 설정 하기 때 문 입 니 다.
이 반전 은 수사 가 시 작 된 후 즉시 호출 될 것 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기