계산된 속성을 사용하여 Vue에서 반응형 데이터를 처리하는 방법

PHPz
풀어 주다: 2023-06-11 12:32:42
원래의
4940명이 탐색했습니다.

Vue는 사용자 인터페이스 구축을 위한 진보적인 JavaScript 프레임워크입니다. Vue에서 반응형 데이터 업데이트는 Vue의 가장 강력한 기능 중 하나입니다. Vue에서 데이터 바인딩은 단방향입니다. 즉, 데이터 변경은 인터페이스에 영향을 주지만 인터페이스 작업(예: 사용자 입력 등)은 데이터에 영향을 미치지 않습니다. 이러한 데이터 업데이트는 Vue의 계산 속성을 통해 자동으로 완료됩니다.

계산 속성은 반응형 데이터를 처리하기 위해 Vue에서 사용하는 방법입니다. 그 본질은 계산 속성입니다. Vue의 방법과 비교하여 계산된 속성은 데이터 계산 및 데이터 캐싱 처리에 더 중점을 두므로 Vue가 데이터를 보다 효율적으로 업데이트할 수 있습니다. 이번 글에서는 계산속성 사용법과 주의사항을 소개하겠습니다.

계산된 속성의 기본 사용법

Vue에서 계산된 속성을 선언하는 방법은 매우 간단합니다. Vue 인스턴스에 계산된 개체를 추가하기만 하면 됩니다. 예:

var vm = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  },
  computed: {
    reversedMessage: function () {
      return this.message.split('').reverse().join('')
    }
  }
})
로그인 후 복사

위 코드에서 Vue 인스턴스를 선언하고 A reversedMessage 속성은 계산을 위해 메시지 속성을 사용하는 계산 객체에 정의됩니다. 메시지 속성 값이 변경되면 Vue는 계산된 reversedMessage 값을 자동으로 업데이트하고 이를 인터페이스에 렌더링합니다.

계산된 속성은 함수여야 한다는 점에 유의해야 합니다. 이 함수는 매개변수를 받을 수도 있고 받지 않을 수도 있습니다. 함수 내에서 이를 사용하여 Vue 인스턴스의 데이터에 액세스하지만 변수에 직접 액세스하지는 않습니다.

또한 계산된 속성의 값은 캐시되고 종속 데이터가 변경될 때만 다시 계산되므로 Vue의 효율성을 크게 향상시킬 수 있습니다. 예를 들어 위의 예에서 메시지 속성의 값이 변경되지 않은 경우 reversedMessage 속성을 읽을 때마다 캐시에서 계산된 값이 직접 반환되며 다시 계산되지 않습니다.

계산된 속성의 고급 사용법

계산된 속성의 설정자

계산된 속성은 데이터를 읽는 데 사용할 수 있을 뿐만 아니라 데이터를 설정하는 데도 사용할 수 있습니다. 계산된 속성에 정의된 set 메소드는 속성에 값이 할당될 때 호출됩니다. 예:

var vm = new Vue({
  el: '#app',
  data: {
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
    fullName: {
      get: function () {
        return this.firstName + ' ' + this.lastName
      },
      set: function (newVal) {
        var names = newVal.split(' ')
        this.firstName = names[0]
        this.lastName = names[names.length - 1]
      }
    }
  }
})
로그인 후 복사

위의 예에서는 읽고 쓸 수 있는 fullName 속성을 정의했습니다. firstName과 lastName의 결합된 문자열을 반환하는 get 메서드를 정의했습니다. 동시에 newVal 매개변수를 수신하고 이 매개변수에 따라 firstName 및 lastName의 값을 설정하는 set 메소드도 정의됩니다. 계산된 속성의 setter 함수는 어떤 값도 반환하지 않는다는 점에 유의해야 합니다.

계산된 속성의 종속성

계산된 속성의 계산은 종속된 속성을 기반으로 합니다. 종속 속성이 변경되면 계산된 속성이 자동으로 다시 계산됩니다. Vue는 종속성 추적 메커니즘을 통해 계산된 속성에 사용되는 종속성을 자동으로 수집할 수 있습니다. 예:

var vm = new Vue({
  el: '#app',
  data: {
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
    fullName: function () {
      console.log('computed fullName')
      return this.firstName + ' ' + this.lastName
    },
    reversedName: function () {
      console.log('computed reversedName')
      return this.fullName.split('').reverse().join('')
    }
  }
})

console.log(vm.reversedName)
vm.firstName = 'Tom'
console.log(vm.reversedName)
로그인 후 복사

위 코드에서 fullName과 reversedName은 모두 firstName과 lastName이라는 두 속성에 의존합니다. reversedName 속성에 접근하면 Vue는 자동으로 fullName과 reversedName의 값을 계산하고 계산된 fullName과 계산된 reversedName을 출력합니다. firstName 값이 수정되면 Vue는 fullName 및 reversedName 값을 다시 계산하고 계산된 fullName 및 계산된 reversedName을 출력합니다.

계산된 속성이 의존하는 데이터가 변경되면 계산된 속성의 getter가 비동기적으로 호출된다는 점에 유의해야 합니다. 즉, 종속 데이터가 변경되면 Vue는 계산된 속성의 값을 즉시 업데이트하지 않고 다음 이벤트 루프에서 업데이트합니다. 이는 불필요한 성능 오버헤드를 방지합니다.

계산된 속성과 감시 속성의 차이점

계산된 속성 외에도 Vue는 반응형 데이터를 처리하는 또 다른 방법인 시계 속성을 제공합니다. 모두 반응형 데이터를 처리할 수 있는 능력이 있지만 이를 구현하는 방법은 다릅니다.

watch 속성은 데이터가 변경되면 즉시 응답 기능을 실행하고 데이터를 처리하는 부작용이 있습니다. 예:

var vm = new Vue({
  el: '#app',
  data: {
    firstName: 'John',
    lastName: 'Doe',
    fullName: ''
  },
  watch: {
    firstName: function (val) {
      this.fullName = val + ' ' + this.lastName
    },
    lastName: function (val) {
      this.fullName = this.firstName + ' ' + val
    }
  }
})
로그인 후 복사

위의 예에서는 데이터 변경 사항을 수신하고 firstName 또는 lastName이 변경될 때 fullName 속성 값을 업데이트하도록 watch 속성을 정의했습니다. watch 속성의 처리 기능은 데이터가 변경되면 즉시 실행된다는 점에 유의하세요.

계산된 속성과 감시 속성의 가장 큰 차이점은 구현 및 사용 시나리오에 있습니다. 계산된 속성은 데이터 계산 및 캐싱과 같은 반복 작업을 처리하는 데 더 적합하므로 Vue의 효율성을 크게 향상시킬 수 있습니다. watch 속성은 애니메이션 효과를 트리거하거나 데이터가 변경될 때 요청 및 기타 부작용 작업을 보내는 등 데이터 변경을 모니터링하는 데 더 적합합니다.

결론

Vue에서 계산된 속성은 반응형 데이터를 처리하는 가장 일반적인 방법 중 하나입니다. 계산된 속성을 사용하면 반복 계산을 피하면서 데이터를 보다 간결하고 효율적으로 처리할 수 있으며 Vue의 성능도 향상됩니다. 계산된 속성을 사용할 때 setter 함수, 종속 관계, 계산된 속성에서 계산된 속성과 감시 속성의 차이점에 주의해야 합니다.

위 내용은 계산된 속성을 사용하여 Vue에서 반응형 데이터를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿