首頁 > web前端 > Vue.js > vue3中的ref與reactive怎麼使用

vue3中的ref與reactive怎麼使用

PHPz
發布: 2023-05-15 22:25:10
轉載
1458 人瀏覽過

    一、ref

    ref 是Vue3 中的函數,它可以將一個普通的變數轉化為一個響應式變數。使用 ref 的時候,我們需要傳入一個初始值,ref 會傳回一個包含了這個初始值的物件。

    使用ref 的語法如下所示:

    import { ref } from 'vue';
    const count = ref(0);
    登入後複製

    在上面的程式碼中,我們建立了一個名為count 的變量,它的初始值為0。透過呼叫 ref 函數,我們將 count 變數轉換為了一個 ref 物件。在元件中使用 count 的時候,我們需要透過 .value 來存取它的值,且ref.value = 可以修改它的值。但是當 ref 在模板中被存取為頂層屬性時,它們會被自動“解包”,所以不需要使用 .value。 :

    
    ------------------
    
    登入後複製

    注意:在標籤中使用無需加.value,在函數中使用必須加.value

    ##除此之外,

    ref 也可以用來監聽DOM 元素的變化:

    <template>
      <div ref="myDiv">这是一个 DOM 元素</div>
    </template>
    
    <script>
      import { ref, onMounted } from &#39;vue&#39;;
    
      export default {
        setup() {
          const myDiv = ref(null);
    
          onMounted(() => {
            console.log(myDiv.value.innerHTML);
          });
    
          return {
            myDiv,
          };
        },
      };
    </script>
    登入後複製

    在上面的程式碼中,我們建立了一個名為

    myDivref 對象,並將它賦值給了一個div 元素。在元件的setup 函數中,我們使用了 onMounted 鉤子函數,在元件渲染完成之後,列印了myDiv 元素的innerHTML

    二、reactive

    reactive 是Vue3 中的另一個API,它可以將一個普通的物件轉換為一個回應式物件。與 ref 不同的是,reactive 傳回的是一個響應式的對象,而不是一個包含值的物件。我們可以透過存取響應式物件的屬性來取得或修改它的值。

    使用reactive 的語法如下所示:

    import { reactive } from &#39;vue&#39;;
    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); // 输出 3
    登入後複製

    reactive 還可以在嵌套物件和陣列中建立響應式對象,例如:

    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和reactive的使用對比

    1.ref的使用方法

    ref建立的變數可以透過.value來取得和修改其值。例如:

    import { ref } from &#39;vue&#39;
    
    // 创建ref
    const count = ref(0)
    
    // 获取ref的值
    console.log(count.value) // 输出 0
    
    // 修改ref的值
    count.value = 1
    console.log(count.value) // 输出 1
    登入後複製

    2. reactive的使用方法

    reactive所建立的物件需要透過解構賦值的方式取得並修改其屬性值。例如:

    import { reactive } from &#39;vue&#39;
    
    // 创建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中文網其他相關文章!

    相關標籤:
    來源:yisu.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板