人妻夜夜爽天天爽三区丁香花-人妻夜夜爽天天爽三-人妻夜夜爽天天爽欧美色院-人妻夜夜爽天天爽免费视频-人妻夜夜爽天天爽-人妻夜夜爽天天

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

vue3中ref與reactive的區別


2025年1月24日 20:41 本文熱度 423
在 vue3 中的組合式 api 中,針對響應式有了一些改變,其中響應式 api 中,兩個比較重要的是 ref 和 reactive,但是對于這兩個區別以及使用場景,大多數初學者都比較迷惑,本文會詳細講述這兩個區別以及使用場景。

1.什么是reactive?

reactive用于創建一個響應式的對象。它會遞歸地將對象的所有屬性轉換為響應式的。這意味著如果對象內部還有嵌套的對象或數組,它們也會變成響應式的。

例如,創建一個reactive對象
const state = reactive({ count0message'Hello' })

2.什么是ref?
ref用于創建一個響應式的數據引用。它可以包裝基本數據類型(如numberstringboolean等)和對象。當ref包裝的值被修改時,Vue 會自動更新與之綁定的 DOM。

例如,創建一個ref來存儲一個數字
const count = ref(0)

3.ref 和reactive 之間的區別?
數據類型支持
    • ref

      :可以包裝基本數據類型和對象。當訪問ref包裝的值時,需要通過.value屬性來獲取實際的值。例如
      console.log(count.value)
    • reactive

      :主要用于對象類型,對于基本數據類型,雖然也可以使用reactive(如reactive({ value: 1})),但不如ref方便。并且reactive對象的屬性可以直接訪問,不需要額外的語法,如
      console.log(state.count)

?響應式轉換方式

  • ref

    :是通過Object.defineProperty()(在 Vue 3 中實際的實現更復雜,但基本原理類似)為.value屬性添加了getset訪問器來實現響應式。
  • reactive

    :是基于Proxy對象來實現響應式的。它可以攔截對象的各種操作(如屬性讀取、設置、刪除等),從而實現響應式更新。這使得reactive在處理復雜的嵌套對象時更加高效和靈活。

在模板中的使用

  • ref

    :在模板中,ref包裝的值會自動解包。例如,如果count是一個ref,在模板中可以直接使用{{ count }},而不需要寫成{{ count.value }}
  • reactive

    :在模板中可以直接訪問reactive對象的屬性,如{{ state.count }}

4. 何時使用 Reactive,何時使用 Ref?

使用 Reactive:

當你需要創建一個包含多個屬性的狀態對象時,例如在狀態機、表單數據等場景中,使用 reactive 更為合適。

如果你的數據結構是復雜的,使用 reactive 可以使代碼更簡潔明了。

使用 Ref:

如果你要管理簡單的數據類型(如數字、字符串等),則使用 ref 更為簡便和高效。

當你需要單獨處理某個變量,或將其作為 props 傳遞時,使用 ref 更加直觀。

5.使用場景

ref的使用場景

當需要存儲一個簡單的基本數據類型的響應式數據時,如一個計數器的值、一個輸入框的文本長度等,ref是很好的選擇。例如,在一個組件中跟蹤用戶點擊按鈕的次數:

<template>  <button @click="increment">Click me</button>  <p>You clicked {{ count }} times.</p></template><script>import { ref } from 'vue';export default {  setup() {    const count = ref(0);    const increment = () => {      count.value++;    };    return { count, increment };  }};</script>

reactive的使用場景

當需要管理一個復雜的狀態對象,特別是包含多個相關屬性的對象時,reactive更合適。例如,管理一個表單的狀態,包括多個輸入框的值、表單的提交狀態等:
<template>  <form @submit.prevent="submitForm">    <input v-model="formData.name" type="text" placeholder="Name">    <input v-model="formData.email" type="email" placeholder="Email">    <button type="submit">Submit</button>  </form>  <p v-if="formData.submitted">Form submitted successfully!</p></template><script>import { reactive } from 'vue';export default {  setup() {    const formData = reactive({      name'',      email'',      submittedfalse    });    const submitForm = () => {      // 這里可以添加表單提交的邏輯,比如發送數據到服務器      formData.submitted = true;    };    return { formData, submitForm };  }};</script>

組合使用

  • 在實際應用中,refreactive經常會組合使用。例如,reactive對象的某個屬性可能是一個ref。這樣可以充分利用它們各自的優勢來構建復雜的響應式應用。

<template>  <div>    <p>{{ state.obj.count }}</p>    <button @click="incrementCount">Increment</button>  </div></template><script>import { ref, reactive } from 'vue';export default {  setup() {    const count = ref(0);    const state = reactive({      obj: { count }    });    const incrementCount = () => {      count.value++;    };    return { state, incrementCount };  }};</script>

總結

在 Vue 3 中,Reactive 和 Ref 是實現響應式編程的重要工具。通過理解這兩者之間的區別以及適用場景,可以更有效地進行狀態管理和應用開發。簡單來說:

  • 使用 Reactive

     處理復雜的對象結構及其屬性。
  • 使用 Ref

     管理簡單基本數據類型或單獨數據。

該文章在 2025/1/25 10:28:30 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 无码一区中文字幕在线观看 | 久久久久久久精品无码av少妇 | 久久精品国产亚洲v高清色欲 | 亚洲精品久久区二区三区蜜桃臀 | 国产探花在线精品一区二区 | 国产精品国产三级国产av剧情 | 无码高清黄色网站 | 精品久久久久久中文字 | 日韩中文字幕在线播放 | 强制潮喷失禁调教sm在线 | 69无人区码一码二码三码 | 日韩欧美日韩图片一区 | 欧美激情一区二区久久久 | 婷婷色婷婷开心五月四房播播 | 成人婷婷网色 | 国产亚洲人成人网站18禁止 | 无码日本精品久久久久久 | 精品人妻无码一区二 | 精品丰满人妻一区二区三区 | 不卡高清AV手机在线观看 | 国亚洲欧美日韩精品 | 亚洲国产va乱码毛片一级高清三 | 久久亚洲精品无码av红樱桃 | 精品国产三级天天在线专区 | 久久久久久国产视频 | 久久国产精品亚洲国产第一综合 | 国产又爽又大又黄A片另类软件 | 久久久久久久精品成人热色 | 精品亚洲а天堂2024 | 国产香蕉久久 | 吉泽明步高清无码中文 | 无码av免费播放在线观看 | 91成人综合在线 | 永久免费观看不收费的软件 | 久久精品美女久久 | www久久久久久 | 成年女人色毛片免费看 | 亚洲日本aⅴ精品一区二区 亚洲日本av在线观看 | 在线a亚洲视频播放在线观看 | 国产91丝袜播放动漫 | jizz国产精品|