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

從Vue2到Vue3【二】——Composition API(第二章)

這篇具有很好參考價值的文章主要介紹了從Vue2到Vue3【二】——Composition API(第二章)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

系列文章目錄

內(nèi)容 鏈接
從Vue2到Vue3【零】 Vue3簡介
從Vue2到Vue3【一】 Composition API(第一章)
從Vue2到Vue3【二】 Composition API(第二章)
從Vue2到Vue3【三】 Composition API(第三章)
從Vue2到Vue3【四】 Composition API(第四章)


前言

Vue3作為Vue.js框架的最新版本,引入了許多令人激動的新特性和改進。其中,組合式API是Vue3最引人注目的特性之一。在本文中,我們將深入探討Vue3的組合式API,并探索其在開發(fā)過程中的優(yōu)勢和用法。無論是新手還是有經(jīng)驗的Vue開發(fā)者,通過學習如何使用組合式API,我們都能更高效地構建復雜的應用程序,提高代碼的可維護性和重用性。

一、 生命周期

說到生命周期,大家一定都不陌生,但是由于Vue 3引入了新的組合式API,因此在Vue 3中,生命周期鉤子函數(shù)發(fā)生了一些變化。
vue2的生命周期圖示
從Vue2到Vue3【二】——Composition API(第二章),從Vue2到Vue3,vue.js,前端,javascript

  • beforeCreate:在實例被創(chuàng)建之前被調(diào)用,此時組件的數(shù)據(jù)和方法尚未初始化。

  • created:在實例被創(chuàng)建之后立即調(diào)用,可以訪問到數(shù)據(jù)和方法,但此時尚未掛載到DOM上。

  • beforeMount:在組件掛載到DOM之前被調(diào)用,此時模板已經(jīng)編譯完成,但尚未渲染到頁面上。

  • mounted:在組件掛載到DOM之后調(diào)用,此時組件已經(jīng)被渲染到頁面上,可以進行DOM操作等操作。

  • beforeUpdate:在數(shù)據(jù)更新之前調(diào)用,發(fā)生在虛擬DOM重新渲染和打補丁之前。

  • updated:在數(shù)據(jù)更新之后調(diào)用,發(fā)生在虛擬DOM重新渲染和打補丁之后。

  • beforeDestroy:在實例銷毀之前調(diào)用,可以在此進行一些清理工作,如清除定時器、解綁事件等。

  • destroyed:在實例銷毀之后調(diào)用,此時組件已經(jīng)從頁面上移除,并且所有的事件監(jiān)聽和數(shù)據(jù)綁定都被自動清除。

  • activated(僅在keep-alive組件中可用):在組件被激活時調(diào)用,僅適用于keep-alive組件。

  • deactivated(僅在keep-alive組件中可用):在組件被停用時調(diào)用,僅適用于keep-alive組件。
    vue3的生命周期圖示
    從Vue2到Vue3【二】——Composition API(第二章),從Vue2到Vue3,vue.js,前端,javascript
    從兩幅圖的對比不難看出,對于配置項形式的生命周期鉤子函數(shù)并沒有很大的變化,唯一要注意的點就是

  • beforeDestroy改名為 beforeUnmount

  • destroyed改名為 unmounted

在vue3中通過配置項形式使用生命周期鉤子函數(shù)

<script>
	export default {
		name: 'Demo',
		setup(){
		},
		//通過配置項的形式使用生命周期鉤子
		beforeCreate() {
			console.log('---beforeCreate---')
		},
		created() {
			console.log('---created---')
		},
		beforeMount() {
			console.log('---beforeMount---')
		},
		mounted() {
			console.log('---mounted---')
		},
		beforeUpdate(){
			console.log('---beforeUpdate---')
		},
		updated() {
			console.log('---updated---')
		},
		beforeUnmount() {
			console.log('---beforeUnmount---')
		},
		unmounted() {
			console.log('---unmounted---')
		}
	}
</script>

在vue3中通過組合式API形式使用生命周期鉤子函數(shù)

<script>
	// 導入使用的鉤子函數(shù)
	import {ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted} from 'vue'
	export default {
		name: 'Demo',
		setup(){
			let sum = ref(0)
			console.log('---setup---')
			//通過組合式API的形式去使用生命周期鉤子
			onBeforeMount(()=>{
				console.log('---onBeforeMount---')
			})
			onMounted(()=>{
				console.log('---onMounted---')
			})
			onBeforeUpdate(()=>{
				console.log('---onBeforeUpdate---')
			})
			onUpdated(()=>{
				console.log('---onUpdated---')
			})
			onBeforeUnmount(()=>{
				console.log('---onBeforeUnmount---')
			})
			onUnmounted(()=>{
				console.log('---onUnmounted---')
			})
			return {sum}
		}
	}
</script>
  • Composition API 形式的生命周期鉤子,與Vue2.x中鉤子對應關系如下:

    • beforeCreate===>setup()
    • created=======>setup()
    • beforeMount ===>onBeforeMount
    • mounted=======>onMounted
    • beforeUpdate===>onBeforeUpdate
    • updated =======>onUpdated
    • beforeUnmount ==>onBeforeUnmount
    • unmounted =====>onUnmounted

beforeCreate以及created,vue3并沒有提供對應的鉤子函數(shù),被setup取代

二、hook

vue3中使用了hooks的概念,使得組件邏輯更加模塊化、可復用————把setup函數(shù)中使用的Composition API進行了封裝
在src目錄下,新建一個hooks文件夾,把setup中能復用的邏輯代碼抽離出來,封裝進js/ts文件里
從Vue2到Vue3【二】——Composition API(第二章),從Vue2到Vue3,vue.js,前端,javascript
在需要使用該邏輯的組件中,導入此函數(shù)并使用

<script>
	import {ref} from 'vue'
	import usePoint from '../hooks/usePoint'
	export default {
		name: 'Demo',
		setup(){
			//數(shù)據(jù)
			let sum = ref(0)
			// 封裝起來的hooks函數(shù)
			let point = usePoint()
			//返回一個對象(常用)
			return {sum,point}
		}
	}
</script>

usePoint.js代碼

import {reactive,onMounted,onBeforeUnmount} from 'vue'
//需要導出該函數(shù)  默認導出、按需導出都可以
export default function (){
	//實現(xiàn)鼠標“打點”相關的數(shù)據(jù)
	let point = reactive({
		x:0,
		y:0
	})

	//實現(xiàn)鼠標“打點”相關的方法
	function savePoint(event){
		point.x = event.pageX
		point.y = event.pageY
		console.log(event.pageX,event.pageY)
	}

	//實現(xiàn)鼠標“打點”相關的生命周期鉤子
	onMounted(()=>{
		window.addEventListener('click',savePoint)
	})

	onBeforeUnmount(()=>{
		window.removeEventListener('click',savePoint)
	})

	return point
}

三、toRef以及toRefs

  • toRef函數(shù):

    • toRef函數(shù)可以將一個響應式對象的屬性轉(zhuǎn)換為一個單獨的響應式引用。
    • 它接收兩個參數(shù):第一個參數(shù)是一個響應式對象,第二個參數(shù)是要引用的屬性名。const name = toRef(person,'name')
    • toRef函數(shù)返回一個新的響應式引用,該引用會始終保持與對象屬性的關聯(lián),即當對象屬性發(fā)生變化時,引用也會跟著變化。
<script>
	import {ref,reactive,toRef} from 'vue'
	export default {
		name: 'Demo',
		setup(){
			//數(shù)據(jù)
			let person = reactive({
				name:'張三',
				age:18,
				job:{
					j1:{
						salary:20
					}
				}
			})

			return {
				name:toRef(person,'name'),
			    age:toRef(person,'age'),
			    salary:toRef(person.job.j1,'salary'),
			}
		}
	}
</script>
  • toRefs函數(shù):

    • toRefs函數(shù)可以將一個響應式對象轉(zhuǎn)換為一個由屬性名作為鍵、屬性值作為值的普通對象,其中每個屬性值都是一個單獨的響應式引用。
    • 它接收一個響應式對象作為參數(shù)。
    • toRefs函數(shù)返回一個新的普通對象,該對象中的每個屬性值都是一個新的響應式引用,與原始響應式對象的屬性保持關聯(lián)。
    • 使用toRefs可以在組件中方便地將一個響應式對象轉(zhuǎn)換為多個單獨的響應式引用,以便更靈活地使用和更新其中的屬性。
<script>
	import {reactive,toRefs} from 'vue'
	export default {
		name: 'Demo',
		setup(){
			//數(shù)據(jù)
			let person = reactive({
				name:'張三',
				age:18,
				job:{
					j1:{
						salary:20
					}
				}
			})
			
			return {
			// toRefs會將person里面的所有屬性轉(zhuǎn)換為多個響應式引用 只轉(zhuǎn)換出來一層 想解多層的還是去使用toRef吧
				...toRefs(person)
			}
		}
	}
</script>

使用toRef和toRefs可以在組件中更靈活地操作響應式數(shù)據(jù)例如,您可以使用toRef創(chuàng)建一個引用特定屬性的響應式引用,然后在模板中直接使用它;或者您可以使用toRefs將整個響應式對象的屬性轉(zhuǎn)換為多個響應式引用,并在組件中分別訪問和更新這些引用。這些函數(shù)可以幫助簡化代碼邏輯,提供更好的可讀性和可維護性

總結

本系列講解到這,已經(jīng)完成了vue3中常用的組合式api講解,后續(xù)的文章將給大家?guī)?strong>其他的組合式api,以及vue3中新增的組件一些小的變化,感謝大家的支持~歡迎訂閱本系列文章!文章來源地址http://www.zghlxwxcb.cn/news/detail-582044.html

到了這里,關于從Vue2到Vue3【二】——Composition API(第二章)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【vue3】11-Vue 3中的Composition Api(一)

    【vue3】11-Vue 3中的Composition Api(一)

    在Vue2中,我們編寫組件的方式是Options APl: Options API的一大特點就是在 對應的屬性 中編寫 對應的功能模塊 ; 比如 data定義數(shù)據(jù) 、 methods中定義方法 、 computed中定義計算屬性 、 watch中監(jiān)聽屬性改變 ,也包括 生命周期鉤子 ; 但是這種代碼有一個很大的弊端: 當我們 實現(xiàn)某一個功

    2024年02月08日
    瀏覽(19)
  • 探究Vue3中的Composition API:優(yōu)化組件邏輯的新利器

    探究Vue3中的Composition API:優(yōu)化組件邏輯的新利器

    在 Vue 3.0 中,引入了一種新的響應式 API,即 toRef 。 toRef 函數(shù)可以將一個普通值轉(zhuǎn)換為響應式引用類型,這樣就可以在模板中直接使用這個響應式引用類型的屬性,并且當該屬性發(fā)生變化時,視圖會自動更新。 通過控制臺打印輸出的內(nèi)容和頁面的變化,我們可以觀察到,age的

    2024年02月10日
    瀏覽(24)
  • Composition API 的優(yōu)勢、新的組件(Fragment,Teleport,Suspense)【Vue3】

    Composition API 的優(yōu)勢、新的組件(Fragment,Teleport,Suspense)【Vue3】

    使用傳統(tǒng)OptionsAPI中,新增或者修改一個需求,就需要分別在data,methods,computed里修改。 我們可以更加優(yōu)雅的組織我們的代碼,函數(shù)。讓相關功能的代碼更加有序的組織在一起。 在Vue2中:組件必須有一個根標簽 在Vue3中:組件可以沒有根標簽,內(nèi)部會將多個標簽包含在一個

    2024年02月02日
    瀏覽(24)
  • vue3前端開發(fā),感受一下組合式api和VUE2選項式的差異

    vue3前端開發(fā),感受一下組合式api和VUE2選項式的差異

    vue3前端開發(fā),感受一下組合式api和VUE2選項式的差異!今天開始,正式開始,進入學習Vue3的內(nèi)容。以后代碼,案例分享,都會采用組合式api的模式為大家做展示。 今天是第一節(jié),帶大家感受一下,Vue3的組合式api和之前傳統(tǒng)的vue2版本選項式api的差別。 首先,大家需要提前使用

    2024年01月19日
    瀏覽(32)
  • Vue 3 Composition API 詳解

    在Vue 3中,引入了一個新的Composition API,旨在提供一種更靈活和可重用的方式來組織組件代碼。Composition API基于函數(shù)式編程思想,允許開發(fā)者將邏輯和狀態(tài)管理邏輯分離,使代碼更加清晰和可維護。 響應式數(shù)據(jù) 在Vue 3中,響應式數(shù)據(jù)是組件狀態(tài)的重要組成部分。通過使用 re

    2024年01月21日
    瀏覽(23)
  • 詳解Vue 3 的 Composition API

    詳解Vue 3 的 Composition API

    Vue 3 的 Composition API 是一種新的組合式 API 風格,它可以更好地組織和復用組件邏輯。相比于 Vue 2 的 Options API,Composition API 提供了更靈活和可組合的方式來編寫組件。 下面是 Composition API 的一些特點和優(yōu)勢: 函數(shù)式組件:Composition API 支持使用函數(shù)式組件的方式來編寫組件。

    2024年02月10日
    瀏覽(17)
  • vue/composition-api 的使用

    最近我們項目是 vue2,但是要使用?jsx + composition ,所以來學習一下這個?vue/composition-api (一)安裝 (二)注冊 在 main.ts 中 (三)使用 最基本的組件: defineComponent 本身的功能很簡單,但是最主要的功能是為了 ts 下的類型推導~ 1. setup 函數(shù) setup 在 create 實例在初始化之前調(diào)

    2024年02月05日
    瀏覽(27)
  • 第二章(第二節(jié)):無窮小量和函數(shù)

    若 lim f(x) = 0 , 則稱函數(shù) f(x) 當 x → x 0 時是無窮小量,簡稱: 無窮小 。 ???? x→ x 0 定理1. 有限多個 無窮小量的代數(shù)和仍是無窮小量 定理2. 有限多個 無窮小量的積也是無窮小量 定理3.常數(shù)與無窮小量的積也是無窮小量 定理4.有界變量與無窮小量的積是無窮小量 當 x→

    2024年02月08日
    瀏覽(39)
  • Vue Composition API之偵聽器watch/watchEffect

    Vue Composition API之偵聽器watch/watchEffect

    在日常的開發(fā)中,很多時候我們需要去對一些狀態(tài)進行監(jiān)聽,比如當顯示學生的成績列表時,我們使用一個學生的學號student_num作為請求成績的參數(shù),如果沒有監(jiān)聽機制,當學號student_num改變時,我們需要依賴用戶的操作去刷新成績。但是有了偵聽器,我們可以通過偵聽器去監(jiān)

    2024年02月08日
    瀏覽(22)
  • 556、Vue 3 學習筆記 -【常用Composition API(五)】 2023.08.25

    Vue3中可以繼續(xù)使用Vue2中的生命周期鉤子,但有兩個被更名: beforeDestroy改名為beforeUnmount destroy改名為unmounted Vue3也提供了組合式API形式的生命周期鉤子,與Vue2中鉤子對應關系如下: beforeCreate === setup() created === setup() beforeMount === onBeforeMount mounted === onMounted beforeUpdate === onBefor

    2024年02月11日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包