← 回筆記列表
前端
Reactivity Fundamentals
宣告響應式狀態的建議方法
- Vue
Declaring Reactive State
ref()
宣告響應式狀態的建議方法
import { ref } from 'vue'
const count = ref(0)
ref() 函數接受一個參數,並將其包裝在一個帶有 .value 屬性的 ref 物件中傳回
const count = ref(0)
console.log(count) // { value: 0 }
console.log(count.value) // 0
count.value++
console.log(count.value) // 1
setup() 函數中宣告並傳回它們
<script setup>
import { ref } from 'vue'
const count = ref(0)
function increment() {
count.value++
}
</script>
<template>
<button @click="increment">
{{ count }}
</button>
</template>
為什麼是ref()
- 自動追蹤與更新:首次渲染時追蹤
ref,數值改變即自動更新 DOM。 value的作用:讓 Vue 能夠攔截並偵測數值的存取與修改。- 保持響應性傳遞:可將
ref傳入函式且不失聯,適合抽離與重構邏輯。
補充:
在底層,Vue 在 getter 中執行跟踪,並在 setter 中執行觸發。從概念上講,你可以將 ref 想像成一個類似這樣的物件:
// pseudo code, not actual implementation
const myRef = {
_value: 0,
get value() {
track()
return this._value
},
set value(newValue) {
this._value = newValue
trigger()
}
}