ref
是Vue3 中的函數,它可以將一個普通的變數轉化為一個響應式變數。使用 ref
的時候,我們需要傳入一個初始值,ref
會傳回一個包含了這個初始值的物件。
使用ref
的語法如下所示:
import { ref } from 'vue'; const count = ref(0);
在上面的程式碼中,我們建立了一個名為count
的變量,它的初始值為0。透過呼叫 ref
函數,我們將 count
變數轉換為了一個 ref
物件。在元件中使用 count
的時候,我們需要透過 .value
來存取它的值,且ref.value =
可以修改它的值。但是當 ref
在模板中被存取為頂層屬性時,它們會被自動“解包”,所以不需要使用 .value
。 :
{{ count }}------------------
注意:在標籤中使用無需加.value
,在函數中使用必須加.value
ref 也可以用來監聽DOM 元素的變化:
<template> <div ref="myDiv">这是一个 DOM 元素</div> </template> <script> import { ref, onMounted } from 'vue'; export default { setup() { const myDiv = ref(null); onMounted(() => { console.log(myDiv.value.innerHTML); }); return { myDiv, }; }, }; </script>在上面的程式碼中,我們建立了一個名為
myDiv 的
ref 對象,並將它賦值給了一個
div 元素。在元件的
setup 函數中,我們使用了
onMounted 鉤子函數,在元件渲染完成之後,列印了
myDiv 元素的
innerHTML。
reactive 是Vue3 中的另一個API,它可以將一個
普通的物件轉換為一個回應式物件。與 ref 不同的是,
reactive 傳回的是一個響應式的對象,而不是一個包含值的物件。我們可以透過存取響應式物件的屬性來取得或修改它的值。
import { reactive } from 'vue'; const state = reactive({ count: 0, });在上面的程式碼中,我們建立了一個名為
state 的響應式對象,它包含了一個名為
count 的屬性,初始值為0。
state 的時候,我們可以像存取普通物件的屬性一樣存取它的屬性:
<template> <div>{{ state.count }}</div> </template>除了存取屬性之外,
reactive 也可以對普通JavaScript 物件或陣列進行響應式處理,可以透過
reactive 將一個普通物件轉換為響應式對象,從而實現對整個物件的響應式追踪,例如:
const obj = { a: 1, b: 2 }; const reactiveObj = reactive(obj); // 响应式追踪 reactiveObj.a = 3; console.log(obj.a); // 输出 3reactive 還可以在嵌套物件和陣列中建立響應式對象,例如:
const obj = { a: 1, b: { c: 2 }, d: [1, 2, 3] }; const reactiveObj = reactive(obj); // 响应式追踪 reactiveObj.b.c = 3; reactiveObj.d.push(4);reactive 也支援在嵌套物件中使用toRefs 將響應式物件的屬性轉換為響應式參考,方便在模板中使用。例如:
const obj = reactive({ a: 1, b: { c: 2 } }); const { b } = toRefs(obj); // 模板中使用 <template> <div>{{ b.c }}</div> </template>總之,
reactive 除了存取屬性之外還能處理整個物件或陣列的回應式追踪,以及支援在嵌套物件中使用
toRefs方便在模板中使用。
ref建立的變數可以透過
.value來取得和修改其值。例如:
import { ref } from 'vue' // 创建ref const count = ref(0) // 获取ref的值 console.log(count.value) // 输出 0 // 修改ref的值 count.value = 1 console.log(count.value) // 输出 12. reactive的使用方法
reactive所建立的物件需要透過解構賦值的方式取得並修改其屬性值。例如:
import { reactive } from 'vue' // 创建reactive对象 const obj = reactive({ count: 0 }) // 获取reactive对象的属性值 console.log(obj.count) // 输出 0 // 修改reactive对象的属性值 obj.count = 1 console.log(obj.count) // 输出 1
以上是vue3中的ref與reactive怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!