国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Vue3】vue3中的watchEffect使用及其他的API

這篇具有很好參考價(jià)值的文章主要介紹了【Vue3】vue3中的watchEffect使用及其他的API。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【Vue3】vue3中的watchEffect使用及其他的API

目錄

?一,watchEffect

二,生命周期

三,什么是hooks?

四,toRef

?五,其他組合式API

5.1shallowReactive&shallowRef

5.2readonly&shallowReadonly

5.3.toRaw&markRaw

5.4自定義Ref-customRef

?5.5provide$inject

5.6響應(yīng)式數(shù)據(jù)的判斷

寫在最后


?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-429414.html

?

?一,watchEffect

1.watch: 既要指明監(jiān)視的屬性,也要指明監(jiān)視的回調(diào)。

2.watchEffect: 不用指明監(jiān)視哪個(gè)屬性,監(jiān)視的回調(diào)中用到哪個(gè)屬性,那就監(jiān)視哪個(gè)屬性。

3.watchEffect類似computed但computed注重的計(jì)算出來(lái)的值(回調(diào)函數(shù)的返回值),所以必須要寫返回值而watchEffect更注重的是過(guò)程(回調(diào)函數(shù)的函數(shù)體),所以不用寫返回值

4.watchEffect監(jiān)視的是他所使用到的數(shù)據(jù),當(dāng)它所使用到的數(shù)據(jù)發(fā)生了變化,watchEffect函數(shù)就會(huì)執(zhí)行,有點(diǎn)類似computed計(jì)算屬性,但是computed更注重執(zhí)行后的返回值

 ? ? ? ? ? ?watchEffect(() => {
 ? ? ? ? ? ? ? ?const x = sum.value
 ? ? ? ? ? ? ? ?const y = person.job.work1.gongzi
 ? ? ? ? ? ? ? ?console.log('watchEffect變化了')
 ? ? ? ? ?  })

【Vue3】vue3中的watchEffect使用及其他的API

二,生命周期

Vue3提供的組合式API對(duì)應(yīng)關(guān)系

beforeCreate() setup
created() setup
beforeMount() onbeforeMount
mounted() ...
beforeUpdate() ...
updated() ...
beforeUnmount() ...
unmounted() ...

【Vue3】vue3中的watchEffect使用及其他的API

三,什么是hooks?

其實(shí)hooks的本質(zhì)就是一個(gè)函數(shù),他負(fù)責(zé)把setup函數(shù)中的組合式API進(jìn)行封裝,以便得到更好的復(fù)用類似于vue2中的mixin

1.首先創(chuàng)建一個(gè)hooks文件

【Vue3】vue3中的watchEffect使用及其他的API

?2.將方法,API封裝起來(lái)并導(dǎo)出

【Vue3】vue3中的watchEffect使用及其他的API

3.引入hooks并使用封裝的方法

【Vue3】vue3中的watchEffect使用及其他的API?

四,toRef

作用: 創(chuàng)建一個(gè) ref 對(duì)象,其value值指向另一個(gè)對(duì)象中的某個(gè)屬性 語(yǔ)法:.const name = toRef(person,'name') 應(yīng)用:要將響應(yīng)式對(duì)象中的某個(gè)屬性單獨(dú)提供給外部使用時(shí) 擴(kuò)展: toRefstoRef 功能一致,但可以批量處理多個(gè)ref對(duì)象,語(yǔ)法: toRefs(person)

?

let person = reactive(
 ? ? ? ? ? ? ?  {
 ? ? ? ? ? ? ? ? ? ?name:'小明',
 ? ? ? ? ? ? ? ? ? ?age:11,
 ? ? ? ? ? ? ? ? ? ?sex:'男',
 ? ? ? ? ? ? ? ? ? ?job:{
 ? ? ? ? ? ? ? ? ? ? ? ?j1:{
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?work:"student",
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?salary:1000
 ? ? ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ?  }
 ? ? ? ? ?  ) ? ? ? ? ? ?
return {
 ? ? ? ? ? ? ? ?person,
 ? ? ? ? ? ? ? ?// 逐個(gè)拆分person里面的屬性并且交出去
 ? ? ? ? ? ? ? ?// name:toRef(person,'name'),
 ? ? ? ? ? ? ? ?// age:toRef(person,'age'),
 ? ? ? ? ? ? ? ?// salary:toRef(person.job.j1,'salary')
?
 ? ? ? ? ? ? ? ?// 將person對(duì)象拆分并交出去
 ? ? ? ? ? ? ? ?...toRefs(person)
 ? ? ? ? ?  }

【Vue3】vue3中的watchEffect使用及其他的API

?【Vue3】vue3中的watchEffect使用及其他的API

?五,其他組合式API

5.1shallowReactive&shallowRef

sharlowReactive: 只處理對(duì)象最外層屬性的響應(yīng)式 (淺響應(yīng)式)

【Vue3】vue3中的watchEffect使用及其他的API?shallowRef: 只處理基本數(shù)據(jù)類型的響應(yīng)式,不進(jìn)行對(duì)象的響應(yīng)式處理

【Vue3】vue3中的watchEffect使用及其他的API

?1.什么時(shí)候使用? 如果有一個(gè)對(duì)象數(shù)據(jù),結(jié)構(gòu)比較深,但變化時(shí)只是外層屬性變化 ===> shallowReactive. 如果有一個(gè)對(duì)象數(shù)據(jù),后續(xù)功能不會(huì)修改該對(duì)象中的屬性,而是生新的對(duì)象來(lái)替換 ===> shallowRef

?

?

5.2readonly&shallowReadonly

1.readonly: 讓一個(gè)響應(yīng)式數(shù)據(jù)變?yōu)橹蛔x的 (深只讀)

2.shallowReadonly: 讓一個(gè)響應(yīng)式數(shù)據(jù)變?yōu)橹蛔x的 (淺只讀)

3.應(yīng)用場(chǎng)景: 不希望數(shù)據(jù)被修改時(shí)

【Vue3】vue3中的watchEffect使用及其他的API

?

5.3.toRaw&markRaw

toRaw 1.作用:將一個(gè)由 reactive 生成的響應(yīng)式對(duì)象轉(zhuǎn)為普通對(duì)象 使用場(chǎng)景:用于讀取響應(yīng)式對(duì)象對(duì)應(yīng)的普通對(duì)象,對(duì)這個(gè)普通對(duì)象的所有操作,不會(huì)引起頁(yè)面更新0 markRaw 1.作用: 標(biāo)記一個(gè)對(duì)象,使其永遠(yuǎn)不會(huì)再成為響應(yīng)式對(duì)象 2.應(yīng)用場(chǎng)景:①有些值不應(yīng)被設(shè)置為響應(yīng)式的,例如復(fù)雜的第三方類庫(kù)等②當(dāng)渲染具有不可變數(shù)據(jù)源的大列表時(shí),跳過(guò)響應(yīng)式轉(zhuǎn)換可以提高性能。

5.4自定義Ref-customRef

<template>
 ? ?<input type="text" v-model="dataOne">
 ? ?<div>{{dataOne}}</div>
</template>
?
<script>
import {ref,customRef} from 'vue'
export default {
 ? ?name:'App',
 ? ?setup(){
 ? ? ? ?function myRew(value,delay){
 ? ? ? ?return customRef((track, trigger)=>{
 ? ? ? ? ? ?let timer
 ? ? ? ? ? ?return {
 ? ? ? ? ? ? ? ?get(){
 ? ? ? ? ? ? ? ? ? ?console.log('讀取數(shù)據(jù)')
 ? ? ? ? ? ? ? ? ? ?track()
 ? ? ? ? ? ? ? ? ? ?return value
 ? ? ? ? ? ? ?  },
 ? ? ? ? ? ? ? ?set(newValue){
 ? ? ? ? ? ? ? ? ? ?clearTimeout(timer)
 ? ? ? ? ? ? ? ? ? timer = setTimeout(()=>{
 ? ? ? ? ? ? ? ? ? ? ? console.log('修改數(shù)據(jù)')
 ? ? ? ? ? ? ? ? ? ? ? value = newValue
 ? ? ? ? ? ? ? ? ? ? ? trigger()
 ? ? ? ? ? ? ? ? ? },delay)
 ? ? ? ? ? ? ?  }
 ? ? ? ? ?  }
 ? ? ?  })
 ? ? ?  }
 ? ?let dataOne = myRew('hello',666)
 ? ? ? ?return{
 ? ? ? ? ? ?dataOne,
 ? ? ? ? ? ?myRew
 ? ? ?  }
 ?  },
};
</script>
<style>
</style>

?5.5provide$inject

//祖組件

<script>
 ? ?import Child from "@/components/Child";
 ? ?import {toRefs,reactive,provide} from 'vue'
 ? ?export default {
 ? ? ? ?name: 'App',
 ? ? ? ?components: {Child},
 ? ? ? ?setup() {
 ? ? ? ? ? ?let car = reactive({
 ? ? ? ? ? ? ? ?name: '奔馳',
 ? ? ? ? ? ? ? ?price: '100w'
 ? ? ? ? ?  })
 ? ? ? ? ? ?provide('car',car)
 ? ? ? ? ? ?return {...toRefs(car)}
 ? ? ?  }
 ?  };
</script>
//孫組件

<script>
import {inject,toRefs} from 'vue'
 ? ?export default {
 ? ? ? ?name:'Son',
 ? ? ? ?setup() {
?
 ? ? ? ? ? ?let car = inject('car')
 ? ? ? ? ? ?return {...toRefs(car)}
 ? ? ?  }
 ?  };
</script>

5.6響應(yīng)式數(shù)據(jù)的判斷

isRef:檢查一 個(gè)值是否為一個(gè)ref對(duì)象 isReactive:檢查- 個(gè)對(duì)象是否是由rreactive創(chuàng)建的響應(yīng)式代理 isReadonly:檢查一個(gè)對(duì)象是否 是由readonly 創(chuàng)建的只讀代理 isProxy:檢查一個(gè)對(duì)象是否是由reactive 或者readonly 方法創(chuàng)建的代理

寫在最后

博主簡(jiǎn)介?? 某神秘組織成員
前端小白,前端優(yōu)質(zhì)創(chuàng)作者,阿里云博主,一個(gè)開(kāi)朗的網(wǎng)友
有一個(gè)名為山魚社區(qū)的社區(qū),收錄許多優(yōu)秀博主的創(chuàng)作內(nèi)容
創(chuàng)作不易希望能得到您的支持,您的支持是我創(chuàng)作的動(dòng)力?

?

?

?

?

到了這里,關(guān)于【Vue3】vue3中的watchEffect使用及其他的API的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [vue3] watch和watchEffect簡(jiǎn)記

    watch函數(shù)的第一個(gè)參數(shù)是監(jiān)聽(tīng)的數(shù)據(jù)源,可以是: ref和computed創(chuàng)建的響應(yīng)式數(shù)據(jù); reactive創(chuàng)建的響應(yīng)式對(duì)象; getter函數(shù); 多個(gè)數(shù)據(jù)源組成的數(shù)組; 注 : 響應(yīng)式對(duì)象的屬性需要使用getter監(jiān)聽(tīng)。 當(dāng)數(shù)據(jù)源是響應(yīng)式對(duì)象時(shí),其屬性的變更會(huì)觸發(fā)回調(diào)函數(shù),但是接收到的 newValue 和

    2024年02月06日
    瀏覽(17)
  • Vue3學(xué)習(xí)——computed、watch、watchEffect

    與Vue2.x中computed配置功能一致 寫法 注意 監(jiān)視r(shí)eactive定義的響應(yīng)式數(shù)據(jù)時(shí):oldValue無(wú)法正確獲取、強(qiáng)制開(kāi)啟了深度監(jiān)視(deep配置失效)。 監(jiān)視r(shí)eactive定義的響應(yīng)式數(shù)據(jù)中的某個(gè)屬性時(shí):deep配置有效。 情況一:監(jiān)視r(shí)ef定義的響應(yīng)式數(shù)據(jù) 監(jiān)視r(shí)ef定義的對(duì)象,改變某一個(gè)屬性時(shí),

    2024年02月22日
    瀏覽(21)
  • Vue3watch 和 watchEffect

    Vue3watch 和 watchEffect

    計(jì)算屬性是通過(guò)聲明性的計(jì)算衍生值,然而有些情況,我們需要在狀態(tài)變化時(shí)執(zhí)行一些\\\"副作用\\\",例如更改DOM,或是根據(jù)異步操作的結(jié)果去修改另一處的狀態(tài)。 一般來(lái)說(shuō),computed主要是涉及計(jì)算某些值的時(shí)候使用, watch(Effect)函數(shù)主要是監(jiān)聽(tīng)某個(gè)狀態(tài),當(dāng)某個(gè)狀態(tài)改變時(shí)才會(huì)觸

    2024年02月20日
    瀏覽(21)
  • vue3的watchEffect和watch其他參數(shù)

    目錄 1、watchEffect基本使用 2、watch 與 watchEffect的異同 3、watch其他參數(shù)使用 1、watchEffect基本使用 1 回調(diào)函數(shù)立即調(diào)用 2 回調(diào)函數(shù)依賴的數(shù)據(jù)都會(huì)被監(jiān)控 3 深度監(jiān)控 2 、 watch 與 watchEffect的異同 1、 相同點(diǎn) :都可以對(duì)數(shù)據(jù)進(jìn)行偵聽(tīng) 2、 不同點(diǎn) :watchEffect回調(diào)函數(shù)立即調(diào)用、對(duì)回調(diào)

    2024年01月24日
    瀏覽(20)
  • Vue3中watch與watchEffect的區(qū)別

    給大家打一個(gè)比喻 watch:教導(dǎo)主任叫老師看張三和李四是否在睡覺(jué) watchEffect:教導(dǎo)主任叫老師看班上有誰(shuí)在睡覺(jué),在睡覺(jué)的就報(bào)告 1.都能監(jiān)聽(tīng)響應(yīng)式數(shù)據(jù)的變化,不同的是監(jiān)聽(tīng)數(shù)據(jù)變化的方式不同 2.watch:要明確指出監(jiān)視的數(shù)據(jù) 3.watchEffect:不用明確的指出監(jiān)視的數(shù)據(jù)(函數(shù)中

    2024年02月21日
    瀏覽(17)
  • vue全家桶進(jìn)階之路32:Vue3 WatchEffect和watch 監(jiān)聽(tīng)

    在 Vue 3 中, watchEffect 是一個(gè)用于監(jiān)聽(tīng)響應(yīng)式數(shù)據(jù)變化的 API。它可以在函數(shù)內(nèi)部自動(dòng)跟蹤數(shù)據(jù)的依賴,并在依賴變化時(shí)重新運(yùn)行函數(shù)。 watchEffect ?的作用以及各個(gè)參數(shù)的功能講解: watchEffect(effect: (onInvalidate: InvalidateCbRegistrator) = void | (() = void) | Promisevoid, options?: WatchEffectOptio

    2023年04月17日
    瀏覽(23)
  • Vue3的watchEffect的妙用,與watch的區(qū)別

    Vue3的watchEffect的妙用,與watch的區(qū)別

    在Vue3中,引入了Composition API,其中的 watchEffect() 函數(shù)是一個(gè)非常強(qiáng)大和靈活的工具,用于處理響應(yīng)式數(shù)據(jù)的變化,使得項(xiàng)目更加彈性和靈活。它與 watch 有所不同,本文將介紹 watchEffect() 的定義、特點(diǎn)、與 watch 的區(qū)別以及使用時(shí)的注意事項(xiàng)。 watchEffect() 函數(shù)用于創(chuàng)建一個(gè)自動(dòng)

    2024年02月16日
    瀏覽(21)
  • Vue3.0 watch和watchEffect監(jiān)聽(tīng)器:VCA

    在項(xiàng)目中,有時(shí)候檢測(cè)一個(gè)變量的值是否反升了變化。通常使用的watch或者使用低效的循環(huán)判斷。 在次vue中給我們?cè)O(shè)置了深度監(jiān)測(cè)數(shù)據(jù)繁盛變化的方法。 1.vue中提供了在watch監(jiān)聽(tīng)時(shí)設(shè)置deep:true 就可以實(shí)現(xiàn)對(duì)對(duì)象的深度監(jiān)聽(tīng); 2.immediate:true,代表watch里面聲明了之后會(huì)立馬執(zhí)行han

    2024年02月06日
    瀏覽(30)
  • vue3中,ref()、reactive()、computed()、watch() 和 watchEffect()的區(qū)別

    ref()、reactive()、computed()、watch() 和 watchEffect() 是 Vue 3 中常用的響應(yīng)式處理函數(shù),它們的主要區(qū)別如下: ref():ref() 函數(shù)用于將一個(gè)普通的 JavaScript 值轉(zhuǎn)化為響應(yīng)式對(duì)象。它返回一個(gè)具有 value 屬性的對(duì)象,我們可以通過(guò)訪問(wèn) value 屬性來(lái)獲取或修改值。當(dāng)我們對(duì) ref() 返回的對(duì)象

    2024年02月22日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包