54
Vue 3 學習之旅
響應式進階
Day 54: 響應式工具:isRef, unref, toRef, toRefs
·6 分鐘閱讀·響應式進階
摘要
Vue 提供了一系列工具函數來處理與 ref 相關的進階操作:isRef
檢查一個值是否為 ref;unref
獲取 ref 的值;toRef
為物件屬性建立 ref;toRefs
將整個物件轉換為 ref 的集合。
定義與說明
isRef(value):檢查一個值是否為 ref 物件,回傳 true 或 false。
unref(value):如果值是 ref,則回傳其 .value;否則直接回傳該值。是 isRef(val) ? val.value : val
的語法糖。
toRef(object, key):為一個響應式物件的指定屬性建立一個 ref。這個新建的 ref 與原始屬性保持同步。
toRefs(object):將一個響應式物件的所有屬性,轉換為一個包含對應 ref 的普通物件。常用於解構 props 或 reactive 物件而不失去其響應性。
實作範例
Vue SFC
<script setup>
import { reactive, toRefs } from 'vue';
const user = reactive({ name: 'Jake', age: 30 });
// 如果直接解構: const { name, age } = user; // name 和 age 會失去響應性
// 正確做法:使用 toRefs
const { name, age } = toRefs(user);
// 現在,name 和 age 都是 ref,且與 user 物件保持同步
</script>
<template>
<input v-model="name" /> <!-- 可以正常工作 -->
<input v-model="age" /> <!-- 可以正常工作 -->
</template>
結論
這些響應式工具提供了處理 ref 和 reactive 物件時所需的靈活性和控制力,特別是 toRefs
,它是在組合式 API 中安全地解構響應式物件的關鍵。
isRef toRefs 響應式工具