最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3響應(yīng)式轉(zhuǎn)換常用API操作示例代碼

 更新時(shí)間:2024年08月03日 09:36:27   作者:今天你有學(xué)習(xí)嗎  
在Vue 3中,響應(yīng)式系統(tǒng)得到了顯著改善,包括使用Composition API時(shí)更加靈活的狀態(tài)管理,這篇文章主要介紹了vue3響應(yīng)式轉(zhuǎn)換常用API操作示例代碼,需要的朋友可以參考下

響應(yīng)式常用API

  • ref 相關(guān):toRef、toRefs、unRef
  • 只讀代理:readonly
  • 判斷相關(guān):isRef、isReactive、isProxy、isReadonly
  • 3.3新增API:toValue

ref相關(guān)

toRef:基于響應(yīng)式對(duì)象的某一個(gè)屬性,將其轉(zhuǎn)換為 ref 值

import { reactive, toRef } from 'vue'
const state = reactive({
  count: 0
})
const countRef = toRef(state, 'count')
// 這里其實(shí)就等價(jià)于 ref(state.count)
console.log(countRef)
console.log(countRef.value)
import { reactive, isReactive, toRef } from 'vue'
const state = reactive({
  count: {
    value: 0
  }
})
console.log(isReactive(state)) // true
console.log(isReactive(state.count)) // true
const countRef = toRef(state, 'count')
// 相當(dāng)于 ref(state.count)
console.log(countRef)
console.log(countRef.value)
console.log(countRef.value.value)

toRefs:將一個(gè)響應(yīng)式對(duì)象轉(zhuǎn)為一個(gè)普通對(duì)象,普通對(duì)象的每一個(gè)屬性對(duì)應(yīng)的是一個(gè) ref 值

import { reactive, toRefs } from 'vue'
const state = reactive({
  count: 0,
  message: 'hello'
})
const stateRefs = toRefs(state)
console.log(stateRefs) // {count: RefImpl, message: RefImpl}
console.log(stateRefs.count.value)
console.log(stateRefs.message.value)

unRef: 如果參數(shù)給的是一個(gè) ref 值,那么就返回內(nèi)部的值,如果不是 ref,那么就返回參數(shù)本身

這個(gè) API 實(shí)際上是一個(gè)語法糖: val = isRef(val) ? val.value : val

import { ref, unref } from 'vue'
const countRef = ref(10)
const normalValue = 20
console.log(unref(countRef)) // 10
console.log(unref(normalValue)) // 20

只讀代理

接收一個(gè)對(duì)象(不論是響應(yīng)式的還是普通的)或者一個(gè) ref,返回一個(gè)原來值的只讀代理。

import { ref, readonly } from 'vue'
const count = ref(0)
const count2 = readonly(count) // 相當(dāng)于創(chuàng)建了一個(gè) count 的只讀版本
count.value++;
count2.value++; // 會(huì)給出警告

在某些場(chǎng)景下,我們就是希望一些數(shù)據(jù)只能讀取不能修改

const rawConfig = {
  apiEndpoint: 'https://api.example.com',
  timeout: 5000
};
// 例如在這個(gè)場(chǎng)景下,我們就期望這個(gè)配置對(duì)象是不能夠修改的
const config = readonly(rawConfig)

判斷相關(guān)

isRef 和 isReactive

import { ref, shallowRef, reactive, shallowReactive, isRef, isReactive } from 'vue'
const obj = {
  a:1,
  b:2,
  c: {
    d:3,
    e:4
  }
}
const state1 = ref(obj)
const state2 = shallowRef(obj)
const state3 = reactive(obj)
const state4 = shallowReactive(obj)
console.log(isRef(state1)) // true
console.log(isRef(state2)) // true
console.log(isRef(state1.value.c)) // false
console.log(isRef(state2.value.c)) // false
console.log(isReactive(state1.value.c)) // true
console.log(isReactive(state2.value.c)) // false
console.log(isReactive(state3)) // true
console.log(isReactive(state4)) // true
console.log(isReactive(state3.c)) // true
console.log(isReactive(state4.c)) // false

isProxy: 檢查一個(gè)對(duì)象是否由 reactive、readonly、shallowReactive、shallowReadonly 創(chuàng)建的代理

import { reactive, readonly, shallowReactive, shallowReadonly, isProxy } from 'vue'
// 創(chuàng)建 reactive 代理對(duì)象
const reactiveObject = reactive({ message: 'Hello' })
// 創(chuàng)建 readonly 代理對(duì)象
const readonlyObject = readonly({ message: 'Hello' })
// 創(chuàng)建 shallowReactive 代理對(duì)象
const shallowReactiveObject = shallowReactive({ message: 'Hello' })
// 創(chuàng)建 shallowReadonly 代理對(duì)象
const shallowReadonlyObject = shallowReadonly({ message: 'Hello' })
// 創(chuàng)建普通對(duì)象
const normalObject = { message: 'Hello' }
console.log(isProxy(reactiveObject)) // true
console.log(isProxy(readonlyObject)) // true
console.log(isProxy(shallowReactiveObject)) // true
console.log(isProxy(shallowReadonlyObject)) // true
console.log(isProxy(normalObject)) // false

3.3新增API

toValue

這個(gè) API 和前面介紹的 unref 比較相似

import { ref, toValue } from 'vue'
const countRef = ref(10)
const normalValue = 20
console.log(toValue(countRef)) // 10
console.log(toValue(normalValue)) // 20

toValue 相比 unref 更加靈活一些,它支持傳入 getter 函數(shù),并且返回函數(shù)的執(zhí)行結(jié)果

import { ref, toValue } from 'vue'
const countRef = ref(10)
const normalValue = 20
const getter = ()=>30;
console.log(toValue(countRef)) // 10
console.log(toValue(normalValue)) // 20
console.log(toValue(getter)) // 30

-EOF-

到此這篇關(guān)于vue3響應(yīng)式轉(zhuǎn)換常用API的文章就介紹到這了,更多相關(guān)vue3響應(yīng)式常用API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue里使用create,mounted調(diào)用方法的正確姿勢(shì)說明

    vue里使用create,mounted調(diào)用方法的正確姿勢(shì)說明

    這篇文章主要介紹了vue里使用create,mounted調(diào)用方法的正確姿勢(shì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue+Element-ui實(shí)現(xiàn)分頁效果

    vue+Element-ui實(shí)現(xiàn)分頁效果

    這篇文章主要為大家詳細(xì)介紹了vue+Element-ui實(shí)現(xiàn)分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • vue中計(jì)算屬性和方法的區(qū)別及說明

    vue中計(jì)算屬性和方法的區(qū)別及說明

    這篇文章主要介紹了vue中計(jì)算屬性和方法的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue3?使用?vue3-video-play實(shí)現(xiàn)在線視頻播放

    vue3?使用?vue3-video-play實(shí)現(xiàn)在線視頻播放

    這篇文章主要介紹了vue3?使用?vue3-video-play?進(jìn)行在線視頻播放,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Vue.js 中 ref 和 reactive 的區(qū)別及用法解析

    Vue.js 中 ref 和 reactive 的區(qū)別及用法解析

    在Vue.js中,ref主要用于創(chuàng)建響應(yīng)式的引用,通過.value屬性來訪問和修改值,特別適用于需要頻繁更改整個(gè)值的場(chǎng)景,而reactive則用于創(chuàng)建深度響應(yīng)的對(duì)象或數(shù)組,本文給大家介紹Vue.js 中 ref 和 reactive 的區(qū)別及用法,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • vue中阻止click事件冒泡,防止觸發(fā)另一個(gè)事件的方法

    vue中阻止click事件冒泡,防止觸發(fā)另一個(gè)事件的方法

    下面小編就為大家分享一篇vue中阻止click事件冒泡,防止觸發(fā)另一個(gè)事件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • VUE3之Non-Props屬性的具體使用

    VUE3之Non-Props屬性的具體使用

    本文主要介紹了VUE3之Non-Props屬性的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • vue 怎么創(chuàng)建組件及組件使用方法

    vue 怎么創(chuàng)建組件及組件使用方法

    vue中的核心就是組件,組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼,下面通過本文重點(diǎn)給大家介紹vue 創(chuàng)建組件及組件使用方法,感興趣的朋友一起看看吧
    2017-07-07
  • vue基于element的區(qū)間選擇組件

    vue基于element的區(qū)間選擇組件

    這篇文章主要介紹了vue基于element的區(qū)間選擇組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • mpvue 項(xiàng)目初始化及實(shí)現(xiàn)授權(quán)登錄的實(shí)現(xiàn)方法

    mpvue 項(xiàng)目初始化及實(shí)現(xiàn)授權(quán)登錄的實(shí)現(xiàn)方法

    這篇文章主要介紹了mpvue 項(xiàng)目初始化及實(shí)現(xiàn)授權(quán)登錄的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

长沙市| 丁青县| 阳谷县| 嫩江县| 嘉峪关市| 阿巴嘎旗| 定日县| 抚顺市| 郯城县| 长治县| 磐石市| 韩城市| 江油市| 昆明市| 石家庄市| 鄱阳县| 惠来县| 含山县| 新化县| 岚皋县| 大兴区| 哈巴河县| 佳木斯市| 南宫市| 武乡县| 延长县| 江永县| 黑水县| 肥东县| 五河县| 华坪县| 成都市| 平陆县| 师宗县| 林口县| 纳雍县| 蒙城县| 什邡市| 无极县| 菏泽市| 民乐县|