.value로 또는 .value로. 그것이 바로 뷰션입니다.
10827 단어 vuewebdevjavascript
reactive
, ref
, computed
가 있습니다. 그들은 구문 측면에서 특이한 점이 있습니다. 그것을 보여주기 위해 뜨거운 음식을 사용합시다.반응 개체
import { reactive, computed } from 'vue'
const coolTemperature = 22
export function useHotFood({ temperatureInCelcius }) {
const state = reactive({
temperatureInCelcius,
isHot: computed(
() => state.temperatureInCelcius > coolTemperature
),
})
function blow() {
state.temperatureInCelcius -= 10
}
// ...
return {
state,
blow,
}
}
상태는 비구조화되면 반응성을 잃게 되므로 있는 그대로 반환해야 합니다.
// Using reactive object named state
const hotFood = useHotFood({ temperatureInCelcius: 100 })
hotfood.state.temperatureInCelcius
hotfood.state.isHot
hotfood.blow()
참조/계산된 개체
import { ref, computed } from 'vue'
const coolTemperature = 22
export function useHotFood(args) {
const temperatureInCelcius = ref(args.temperatureInCelcius)
const isHot = computed(
() => temperatureInCelcius.value > coolTemperature
)
function blow() {
temperatureInCelcius.value -= 10
}
// ...
return {
temperatureInCelcius,
isHot,
blow,
}
}
참조 값은 해당 값 속성을 통해 액세스해야 합니다. Ref는 템플릿에서 풀릴 수 있지만 템플릿과 스크립트 블록 간에 구문 불일치가 발생합니다.
// Using ref for each prop of state
const hotFood = useHotFood({ temperatureInCelcius: 100 })
hotFood.temperatureInCelcius.value
hotFood.isHot.value
hotFood.blow()
// or
const {
temperatureInCelcius, isHot, blow
} = useHotFood({ temperatureInCelcius: 100 })
temperatureInCelcius.value
isHot.value
blow()
사용할지 말지 기억하는 오버헤드
.value
는 사람들을 혼란스럽게 만듭니다. 하지만 그럴 필요는 없습니다.vue-extend-reactive 입력
더 간결한 구문을 달성하기 위해 한 가지 방법은 반응 개체를 확장하는 것입니다. 아마도 다른 반응 개체(예: getter) 또는 메서드로 확장할 수 있습니다.
반응형 객체는 자바스크립트를 사용할 때 메소드를 포함할 수 있지만 같은 블록에서 호출하면 더 장황해지고, 타입스크립트를 사용할 때 오류가 발생합니다.
그리고 이것이 Proxy 객체를 활용한 반응 객체 확장을 가능하게 하기 위해
vue-extend-reactive
가 생성된 이유입니다.추가 반응 객체(예: getter) 또는 이러한 이점을 얻기 위한 추가 메서드를 사용하여 구성 함수에서 반환된 반응 객체를 확장합니다.
value
또는 ref
개체의 computed
속성을 사용하여 값을 얻을지 여부에 대한 오버헤드 생각을 제거합니다. 설치
npm install vue-extend-reactive
yarn add vue-extend-reactive
용법
import { reactive, computed } from 'vue'
import { extend } from 'vue-extend-reactive'
const coolTemperature = 22
export function useHotFood({ temperatureInCelcius }) {
const state = reactive({
temperatureInCelcius,
isHot: computed(
() => state.temperatureInCelcius > coolTemperature
),
})
function blow() {
state.temperatureInCelcius -= 10
}
// ...
return extend(state, { blow })
}
다음은 확장된 반응 객체를 반환한 후의 최종 결과입니다.
const hotFood = useHotFood({ temperatureInCelcius: 100 })
hotFood.temperatureInCelcius
hotFood.isHot
hotFood.blow()
이 도우미는 Vue 2(
@vue/composition-api
사용) 및 Vue 3과 호환됩니다.반환된 반응성 객체는 반응성을 잃게 되므로 구조화를 해제할 수 없다는 한 가지 주의 사항이 있습니다. 그러나 더 간결하고 일관된 구문을 얻기 위해 기꺼이 희생할 수 있습니다.
마지막으로 이것이 vue 패키지 작성자가 합성 기능이나 후크를 만드는 방법이 되길 바랍니다.
연결:
Reference
이 문제에 관하여(.value로 또는 .value로. 그것이 바로 뷰션입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/c5n8/to-value-or-not-to-value-that-is-the-vuestion-417d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)