Vue에서 ref와 reactive를 사용해야 하는 경우
9941 단어 vuejavascript
ref()
및 reactive()
를 도입했습니다. 어느 것이 더 나은지 또는 언제 사용해야 하는지에 대해 약간의 혼란이 있었습니다. 나는 그들의 차이점에 대해 약간의 빛을 비추고 내 응용 프로그램에서 어떻게 사용하는지 보여주기 위해 여기에 있습니다.참조
ref()
메서드는 단일 값을 사용하고 가변 및 반응 객체를 다시 반환합니다. 이 예제 코드를 살펴보겠습니다.const amount = ref(0)
금액을 1씩 증가시키는 방법을 만들고 싶다면 다음과 같이 할 수 있다고 생각할 수 있습니다.
const increaseAmount = () => {
amount++
}
그러나
ref()
에서는 ref 개체 내부의 데이터를 검색하거나 조작하기 위해 value
라는 중간 속성을 사용해야 합니다. 따라서 대신 다음을 수행합니다.const increaseAmount = () => {
amount.value++
}
ref()
메서드는 모든 JavaScript 프리미티브를 사용하므로 부울, 문자열, 정수 또는 개체를 전달할 수 있습니다.<script setup>
const active = ref(true)
const message = ref('Hello, world!')
const amount = ref(23)
const user = ref({
name: 'Andrew',
email: '[email protected]'
})
user.value.email = '[email protected]'
</script>
<template>
<h1>{{ message }}</h1> <!-- Hello, world! -->
</template>
값을 참조하거나 변경할 때(템플릿 외부) 항상 반환된 객체에
.value
속성을 사용해야 합니다.반응성
reactive()
메서드는 ref와 유사하게 작동하지만 개체만 허용합니다.// not reactive
const user = reactive('Andrew')
// reactive
const user = reactive({ name: 'Andrew' })
ref와 달리 반응 객체의 속성을 가져오거나 변경하기 위해
.value
와 같은 중간 속성을 사용할 필요가 없습니다. 객체의 속성을 직접 호출할 수 있습니다.<script setup>
const user = reactive({ name: 'Andrew' })
user.name = 'Ashley'
</script>
<template>
<p>My name is {{ user.name }}</p> <!-- My name is Ashley -->
</template>
reactive()
의 흥미로운 기능은 자체 내에서 사용하기 위해 ref 개체를 래핑 해제할 수도 있다는 것입니다.const items = ref(10)
const cart = reactive({ items })
items.value++
console.log(cart.items) // 11
cart.items++
console.log(items.value) // 12
둘 사이의 반응성도 유지되므로 하나의 값을 업데이트하면 다른 값의 업데이트가 트리거됩니다.
결론
ref()
및 reactive()
모두 Vue 구성 요소에 반응성을 추가합니다. 이를 통해 애플리케이션 전체에서 실시간으로 업데이트되고 응답하는 데이터를 가질 수 있습니다. 차이점은 다음과 같습니다.개인적으로 저는 일반적으로 구성 요소의 반응 속성에 대해
ref()
를 고수합니다. 그래도 몇 개 이상 있으면 로컬 "상태"개체를 만들고 대신 reactive()
를 사용합니다.다음과 같이 대신합니다.
const name = ref('Andrew')
const checked = ref(false)
const games = ref(['Factorio', 'CS:GO', 'Cities: Skylines'])
const elem = ref('#active')
나는 이것을 가지고있다:
const state = reactive({
name: 'Andrew',
checked: false,
games: ['Factorio', 'CS:GO', 'Cities: Skylines'],
elem: '#active'
})
글쎄요, 이것이 Vue에서 ref와 reactive 사이의 차이점(및 유사점)을 좀 더 명확하게 만들었기를 바랍니다.
이것에 대해 질문이 있거나 웹 개발과 관련된 다른 사항이 있으면 의견에 알려주거나 에서 저에게 연락하십시오!
Reference
이 문제에 관하여(Vue에서 ref와 reactive를 사용해야 하는 경우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aschmelyun/when-to-use-ref-vs-reactive-in-vue-24el텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)