欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3中ref和reactive的基本使用及區(qū)別詳析

 更新時間:2022年07月15日 14:32:15   作者:北海的大魚  
這篇文章主要給大家介紹了關于Vue3中ref和reactive的基本使用及區(qū)別的相關資料,需要的朋友可以參考下

前言

今天給大家講一下在vue3中ref和reactive的使用方法,以及他們的使用區(qū)別在哪里,下面通過一個簡單的計數(shù)器的例子來給大家進行說明

ref—計數(shù)器案例

ref 主要用于基本類型的響應,看如下代碼:

import { ref } from 'vue' // 導入ref
interface DataProps {
  count: number;
  double: number;
  increase: () => void
}
export default {
  name: 'App',
  setup() {
    const count = ref(0)
    const double = computed(() => {
      return count.value*2
    })
    const increase = () => {
      count.value++
    }
    
    return {
      count,
      double,
      increase
    }
  }
}

在setup方法通過ref實現(xiàn)響應式對象,最后要在return中進行返回。

我們發(fā)現(xiàn)幾個變量都分散在各處,那么有沒有什么辦法可以將他們包裹在對象里呢?那就來看看下面的reactive

reactive—計數(shù)器案例

reactive:主要用于引用類型的響應。里面屬性拿出來單獨使用,可能會喪失響應性

代碼如下(示例):

import { reactive, toRefs } from 'vue'
interface DataProps {
  count: number;
  double: number;
  increase: () => void
}
export default {
  name: 'App',
  setup() {
    const data: DataProps = reactive({
      count: 0,
      increase: () => { data.count++ },
      double: computed(() => data.count * 2)
    })
    const refData = toRefs(data)
    refData.double
    return {
      ...refData
    }
  }
}

定義一個data對象,在里面定義參數(shù)

在return中我們需要讓變量保持響應式,那么就需要使用toRefs,就可以將普通的類型變?yōu)閞ef響應式類型

PS:在return里面使用…refData(前面加三點),那么在使用的時候就可以直接使用變量名,例如:< h1> {{count}} < /h1>

區(qū)別

通過上面的例子,大家應該對ref和reactive有了一些了解,下面通過標準的 js 來進行類比,幫助大家更好的理解區(qū)別:

類似使用ref

先定義x,y為0,當使用函數(shù)時,再更新x和y的值

let x = 0
let y = 0

function updataNumber() {
?? ?x = 2
?? ?y = 3?
}

類似使用 reactive

在pos中有兩個key都為0,在函數(shù)中更新兩個值pos.x = 2.

x,y必須和對象在一起才能引用,如果像第三種const { x } = pos,先取出來,再進行更新,x還是舊的值,并且會喪失響應式

const pos = {
?? ?x: 0,
?? ?y: 0,
}

function updata?? ?Object() {
?? ?pos.x = 2
?? ?pos.y = 3?
}

const { x } = pos
pos.x = 3

附:ref和reative的使用心得

一般來說,vue定義響應式變量有兩種寫法:

1)寫法1:reative聲明所有變量,最后return的時候一起toRefs

一種是把reative當做vue2的data,所有變量用reative一次性生成,最后一起toRefs(這個注意不要漏)。優(yōu)點是賦值不用寫.value

 <template>
  <h2>name: {{state.name}}</h2>
  <h2>age: {{state.age}}</h2>
  <h2>wife: {{state.wife}}</h2>
  <hr>
  <button @click="update">更新</button>
</template>
 
<script>
/* 
reactive: 
    作用: 定義多個數(shù)據(jù)的響應式
    const proxy = reactive(obj): 接收一個普通對象然后返回該普通對象的響應式代理器對象
    響應式轉換是“深層的”:會影響對象內部所有嵌套的屬性
    內部基于 ES6 的 Proxy 實現(xiàn),通過代理對象操作源對象內部數(shù)據(jù)都是響應式的
*/
import {
  reactive,toRefs
} from 'vue'
export default {
  setup () {
    /* 
    定義響應式數(shù)據(jù)對象
    */
    const state = reactive({
      name: 'tom',
      age: 25,
      wife: {
        name: 'marry',
        age: 22
      },
    })
    console.log(state, state.wife)
 
    const update = () => {
      state.name += '--'
      state.age += 1
      state.wife.name += '++'
      state.wife.age += 2
    }
 
    return {
      ...toRefs(state)
    }
  }
}
</script>

2)寫法2:從頭到尾都用ref聲明變量,賦值的時候要注意加.value

第二種,從頭到尾都用ref,除了賦值時要.value很麻煩,其他倒沒什么。

<template>
  <h2>{{count}}</h2>
  <hr>
  <button @click="update">更新</button>
</template>
 
<script>
import {
  ref
} from 'vue'
export default {
 
  setup () {
 
    // 定義響應式數(shù)據(jù) ref對象
    const count = ref(1)
    console.log(count)
 
    // 更新響應式數(shù)據(jù)的函數(shù)
    function update () {
      // alert('update')
      count.value = count.value + 1
    }
 
    return {
      count,
      update
    }
  }
}
</script>

總結

通過例子和js原生例子類比給大家講了ref和reactive的使用及區(qū)別。在實際項目中,大家還是需要根據(jù)自己平時的編程習慣來選擇對應的方法。

到此這篇關于Vue3中ref和reactive的基本使用及區(qū)別的文章就介紹到這了,更多相關Vue3 ref和reactive使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在Vue組件中使用 TypeScript的方法

    在Vue組件中使用 TypeScript的方法

    typescript不僅可以約束我們的編碼習慣,還能起到注釋的作用,當我們看到一函數(shù)后我們立馬就能知道這個函數(shù)的用法。這篇文章主要介紹了在Vue組件中使用 TypeScript的方法,需要的朋友可以參考下
    2018-02-02
  • vue-cli瀏覽器實現(xiàn)熱更新的步驟

    vue-cli瀏覽器實現(xiàn)熱更新的步驟

    這篇文章主要介紹了vue-cli-瀏覽器實現(xiàn)熱更新,最常用的是webpack-dev-server,它是一個小型的Node.js?Express服務器,它使用webpack-dev-middleware來服務于webpack的包,本文結合實例代碼介紹的非常詳細,需要的朋友參考下吧
    2024-03-03
  • vue2中filter()的實現(xiàn)代碼

    vue2中filter()的實現(xiàn)代碼

    vue2.0里,不再有自帶的過濾器,需要自己定義過濾器。下面通過實例代碼給大家介紹vue2中filter()的相關知識,感興趣的朋友一起看看吧
    2017-07-07
  • Vue.js 事件修飾符的使用教程

    Vue.js 事件修飾符的使用教程

    在實際開發(fā)中,不可避免的會使用到對于事件的操作,如何處理 DOM 事件流,成為我們必須要掌握的技能。這篇文章主要介紹了Vue.js 事件修飾符的使用教程,需要的朋友可以參考下
    2018-11-11
  • Vue中splice()方法對數(shù)組進行增刪改等操作的實現(xiàn)

    Vue中splice()方法對數(shù)組進行增刪改等操作的實現(xiàn)

    vue中對數(shù)組的元素進行刪除,以前一直以為這個方法是vue中特有的,后來百度之后才知道原來是js的一個寫法,下面這篇文章主要給大家介紹了關于Vue中splice()方法對數(shù)組進行增刪改等操作的實現(xiàn)方法,需要的朋友可以參考下
    2023-05-05
  • 10個Vue3中的編程實用技巧分享

    10個Vue3中的編程實用技巧分享

    這篇文章主要為大家詳細介紹了10個Vue3中的編程實用技巧,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • vue3+vite使用環(huán)境變量.env的一些配置情況詳細說明

    vue3+vite使用環(huán)境變量.env的一些配置情況詳細說明

    開發(fā)中經(jīng)常會使用環(huán)境變量,Vite相比于Webpack也有一定的變化,下面這篇文章主要給大家介紹了關于vue3+vite使用環(huán)境變量.env的一些配置情況說明的相關資料,需要的朋友可以參考下
    2022-12-12
  • Vue?配置代理詳情

    Vue?配置代理詳情

    這篇文章主要介紹了Vue?配置代理詳情,文章圍繞主題的相關資料展開詳細內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • 詳解從Vue-router到html5的pushState

    詳解從Vue-router到html5的pushState

    這篇文章主要介紹了詳解從Vue-router到html5的pushState,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue(2.x,3.0)配置跨域代理

    vue(2.x,3.0)配置跨域代理

    這篇文章主要介紹了vue(2.x,3.0)配置跨域代理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11

最新評論