vuewatch 데이터 해결 방법 두 번 호출된 문제

배경:
라우팅 구조/video/1.mp4, 즉/video는 부모 루트,/1.mp4는/video의 동적 하위 루트입니다./video 부모 루트에서 url의params를 통해 영상 정보를 얻을 수 있습니다. 즉,/1.mp4에서 대응하는 영상의 완전한 정보를 얻은 다음props를 통해 동적 하위 루트로 전송하고 하위 루트는 받아들인 영상 대상을 통해 전시한다
질문:
루트가 전환될 때, 즉 내가 다른 영상을 눌렀을 때, 동적 하위 루트의 변화를 초래할 때, 나는/video 부모 루트의 변화를 감청하고 url의params에 따라 영상 대상을 얻고props를 통해 하위 루트에 자동으로 전송한다. 나는 하위 루트에서watch 영상 대상을 통해 조작을 한다. 결과

watch: { 
 video () {
 console.log("test")
 }
}
test는 두 번 인쇄되었습니다. 한 번 검색을 통해 하위 루트가 전환될 때 부모 루트/비디오의 데이터 데이터가 기본값으로 초기화되기 때문에 비디오 대상이 두 번 바뀌었습니다. 한 번은 기본값이 빈 대상으로 초기화되고 한 번은 요청한 정확한 데이터입니다.
끝:
비디오 대상을 vuex에 저장하고 부모 루트는 vuex의 비디오 대상을 하위 루트로 전송하면 됩니다.
보충 지식: vue watch가 대상이나 그룹일 때 newvalue는oldvalue와 같다
공식 코드를 고쳐 썼습니다. 깊이watch가 대상일 때 newval과oldval의 값은 왜 같을까요?

var vm = new Vue({
 data: {
 a: 1,
  c:{
   c1:1,
   c2:2
  }
 },
 watch: {
 'a': function (val, oldVal) {
  console.log(val, oldVal,(val== oldVal))
 },
 //  
 'b': 'someMethod',
 //   watcher
 'c': {
  handler: function (val, oldVal) { 
   console.log(val, oldVal,(val== oldVal))
   },
  deep: true
 }
 }
})
  
vm.a = 2 
vm.c.c1 = 2 
깊이와 상관없이 객체나 그룹을 수정(교체하지 않음)하면 새 값과 이전 값이 동일하게 인덱스되므로 새 값과 동일합니다.Vue는 수정된 이전 값의 사본을 유지하지 않습니다.
이상의 vue watch 데이터를 해결하는 방법이 두 번 호출된 문제는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고 부탁드리고 저희를 많이 사랑해 주세요.

좋은 웹페이지 즐겨찾기