亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue3之toRefs和toRef在reactive中的一些應(yīng)用方式

 更新時(shí)間:2024年03月18日 10:06:27   作者:小饅頭學(xué)python  
這篇文章主要介紹了Vue3之toRefs和toRef在reactive中的一些應(yīng)用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

回顧響應(yīng)式對象

在介紹知識(shí)點(diǎn)之前,我們準(zhǔn)備好初始代碼

<template>
<h2>姓名:{{ person.name }}</h2>
<h2>姓名:{{ person.age }}</h2>
<button @click="change_name">修改名字</button>
<button @click="change_age"></button>
 </template>
 
 <script lang="ts" setup name="Person11">
  import {reactive} from 'vue'
  
 let person = reactive({
  name:'饅頭',
  age:22
 })
 function change_name(){
  person.name += '*'
 }

 function change_age(){
  person.age += 1
 }

 </script>
 
 <style scoped>
   .person {
     background-color: skyblue;
     box-shadow: 0 0 10px;
     border-radius: 10px;
     padding: 20px;
   }
   button {
     margin: 0 5px;
   }
 </style>

運(yùn)行結(jié)果如下

請?zhí)砑訄D片描述

是否和你想的一樣呢,我們使用了reactive進(jìn)行創(chuàng)建響應(yīng)式對象

接下來我們對person進(jìn)行解構(gòu)賦值

或許有些人不太理解解構(gòu)賦值,我從網(wǎng)上找了一段話

  • 解構(gòu)賦值是 JavaScript 中一種方便的語法,用于從數(shù)組或?qū)ο笾刑崛?shù)據(jù)并賦值給變量。通過解構(gòu)賦值,可以輕松地提取數(shù)組中的元素或?qū)ο笾械膶傩裕勾a更簡潔易讀。
  • 它還可以嵌套使用,處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但要注意避免過度解構(gòu),以保持代碼的可讀性。

接下來我們看看代碼中如何操作,只需在數(shù)據(jù)下面加一行

let {name,age} = person

接下來我們修改方法中的部分代碼

//原代碼
function change_name(){
          person.name += '*'
        }

        function change_age(){
          person.age += 1
        }
//修改之后的代碼
function change_name(){
          name += '*'
        }

        function change_age(){
          age += 1
        }

這樣我們的頁面是否還會(huì)響應(yīng)呢,答案是不可以

請?zhí)砑訄D片描述

如果我們再修改模板里面的內(nèi)容呢

<h2>姓名:{{ name }}</h2>
<h2>姓名:{{ age }}</h2>

答案也是不更新的,但是數(shù)據(jù)究竟改沒改呢,我們打印一下

function change_name(){
          name += '*'
          console.log(name)
        }

        function change_age(){
          age += 1
          console.log(age)
        }

控制臺(tái)結(jié)果顯示如下,所以說是改了的

接下來我們解釋一下

let {name,age} = person

上面這行代碼和下面兩行代碼其實(shí)是等價(jià)的

let name=person.name
let age=person.age

同時(shí)我們要明確一點(diǎn),下圖的數(shù)據(jù)是響應(yīng)式的

但是我們解構(gòu)后相當(dāng)于自己重新定義了一個(gè)對象name和age,然后person.name和person.age是不變的

多說無益,我們測試一下叭

function change_name(){
          name += '*'
          console.log(name, person.name)
        }

結(jié)果顯然了叭,結(jié)論就是:響應(yīng)式對象解構(gòu)出的并非是響應(yīng)式對象

介紹toRefs

承接上個(gè)標(biāo)題,我們?nèi)绻胍獙⒔鈽?gòu)的對象變?yōu)轫憫?yīng)式的,我們應(yīng)該怎么做呢,只需要import一個(gè)toRefs

import {reactive,toRefs} from 'vue'

同時(shí)我們再將解構(gòu)的person包裹一下toRefs

let {name,age} = toRefs(person)

這樣的意思就是,將解構(gòu)的數(shù)據(jù)變?yōu)镽ef定義的響應(yīng)式對象,將reactive對象變?yōu)镽ef對象

接下來我們改一下方法

function change_name(){
          name.value += '*'
          console.log(name, person.name)
        }

        function change_age(){
          age.value += 1
          console.log(age)
        }

這樣我們再測試一下

請?zhí)砑訄D片描述

介紹toRef(不常用)

toRef和toRefs是 Vue3 中用于處理響應(yīng)式對象的兩個(gè)函數(shù),它們有一些重要的區(qū)別

toRef:    

  • 參數(shù):接收一個(gè)響應(yīng)式對象和一個(gè)屬性名,返回一個(gè) ref 對象,指向該屬性的值。
  • 用途:主要用于將單個(gè)屬性轉(zhuǎn)換為 ref 對象,使得該屬性的值能夠被響應(yīng)式地跟蹤。

toRefs:

  • 參數(shù):接收一個(gè)響應(yīng)式對象,返回一個(gè)包含該對象所有屬性的 ref 對象。
  • 用途:常用于在組件中將 props 轉(zhuǎn)換為響應(yīng)式對象,或者在 setup 函數(shù)中處理響應(yīng)式對象的多個(gè)屬性。

總的來說,toRef用于處理單個(gè)屬性,將其轉(zhuǎn)換為 ref 對象,而toRefs用于處理整個(gè)對象,將對象的所有屬性都轉(zhuǎn)換為 ref 對象

總結(jié)

本節(jié)介紹了一下toRefs和toRef,同時(shí)回憶了一下reactive

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue-element-admin平臺(tái)側(cè)邊欄收縮控制問題

    Vue-element-admin平臺(tái)側(cè)邊欄收縮控制問題

    這篇文章主要介紹了Vue-element-admin平臺(tái)側(cè)邊欄收縮控制問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue監(jiān)聽屏幕尺寸變化問題,window.onresize很簡單

    vue監(jiān)聽屏幕尺寸變化問題,window.onresize很簡單

    這篇文章主要介紹了vue監(jiān)聽屏幕尺寸變化問題,window.onresize很簡單,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 對vux點(diǎn)擊事件的優(yōu)化詳解

    對vux點(diǎn)擊事件的優(yōu)化詳解

    今天小編就為大家分享一篇對vux點(diǎn)擊事件的優(yōu)化詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue中使用echarts以及簡單關(guān)系圖的點(diǎn)擊事件方式

    vue中使用echarts以及簡單關(guān)系圖的點(diǎn)擊事件方式

    這篇文章主要介紹了vue中使用echarts以及簡單關(guān)系圖的點(diǎn)擊事件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • vue3父組件和子組件如何傳值實(shí)例詳解

    vue3父組件和子組件如何傳值實(shí)例詳解

    近期學(xué)習(xí)vue3的父子組件之間的傳值,發(fā)現(xiàn)跟vue2.x的父子組件之間的傳值并沒有太大的區(qū)別,下面這篇文章主要給大家介紹了關(guān)于vue3父組件和子組件如何傳值的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • vue3??mixin?混入使用方法

    vue3??mixin?混入使用方法

    這篇文章主要介紹了?vue3??mixin?混入使用方法,mixin?混入,提供了一種非常靈活的方式,來分發(fā)?vue?組件中的可復(fù)用功能,一個(gè)mixin?對象可以包含任意組件選項(xiàng),當(dāng)組件使用?mixin?對象時(shí),所有的?mixin?對象的選項(xiàng)將被混入組件本身的選項(xiàng)。,需要的朋友可以參考一下
    2021-11-11
  • 解決vue?app.js/vender.js過大優(yōu)化啟動(dòng)頁

    解決vue?app.js/vender.js過大優(yōu)化啟動(dòng)頁

    這篇文章主要為大家介紹了解決vue?app.js/vender.js過大優(yōu)化啟動(dòng)頁過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 項(xiàng)目nginx部署到非根目錄下vue配置方案

    項(xiàng)目nginx部署到非根目錄下vue配置方案

    這篇文章主要介紹了項(xiàng)目nginx部署到非根目錄下vue配置方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue+element遇到的坑及解決

    vue+element遇到的坑及解決

    這篇文章主要介紹了vue+element遇到的坑及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue3封裝Element導(dǎo)航菜單的實(shí)例代碼

    vue3封裝Element導(dǎo)航菜單的實(shí)例代碼

    這篇文章主要介紹了vue3封裝Element導(dǎo)航菜單的實(shí)例代碼,分為菜單數(shù)據(jù)格式示例,控制導(dǎo)航收縮的詳細(xì)代碼,本文通過實(shí)例代碼介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03

最新評論