source

Vue는 감시된 속성이 계산된 속성과 동일하게 캐시됩니까?

goodcode 2022. 8. 7. 16:49
반응형

Vue는 감시된 속성이 계산된 속성과 동일하게 캐시됩니까?

Vue 문서에서는 계산된 속성은 일반 방법을 사용하는 것이 아니라 스마트하게 캐시된다고 언급되어 있습니다.

이에 비해 메서드 호출은 재렌더가 발생할 때마다 항상 함수를 실행합니다.캐싱이 필요한 이유우리가 비싼 계산 자산을 가지고 있다고 상상해봐...

질문입니다. 감시된 속성도 계산 속성과 같이 캐싱이 있습니까?(Vuex 시청 포함(예: 사용)vm.$store.watch...)

Saurabh의 대답은 틀리지는 않지만, 나는 그것이 그 질문에 실제로 답하지 않는다고 느낀다.

정답은: 아니다. 관찰자는 부작용이 있지만 반환가치가 없고 자산으로 사용할 수 없기 때문에 관찰자는 "캐시"되지 않는다.- 이 안 된다.

따라서 관찰자를 위해 어떤 것도 숨길 필요도 없고 현명하지도 않다.

그러나 둘 다 감시 데이터가 변경될 때만 실행됩니다.

동작watchers행동과 같을 것이다computed~하듯이computed를 사용하여 내부적으로 구현됩니다.watchers. 를 정의하는 경우computed속성, vue는 계산 속성에 사용되는 변수에 대해 내부적으로 워처를 설정합니다. 소스로부터의 아래 코드를 참조하십시오.

function makeComputedGetter (getter: Function, owner: Component): Function {
  const watcher = new Watcher(owner, getter, noop, {
    lazy: true
  })
  return function computedGetter () {
    if (watcher.dirty) {
      watcher.evaluate()
    }
    if (Dep.target) {
      watcher.depend()
    }
    return watcher.value
  }
}

코드 입력은 다음과 같습니다.computed또는watch블록은 반응 데이터가 변경될 때 한 번만 실행됩니다.

언급URL : https://stackoverflow.com/questions/41645984/do-vue-watched-properties-cache-just-like-the-computed-properties

반응형