vue3.0中setup使用(兩種用法)
一、setup函數(shù)的特性以及作用
可以確定的是 Vue3.0 是兼容 Vue2.x 版本的 也就是說我們再日常工作中 可以在 Vue3 中使用 Vue2.x 的相關(guān)語法 但是當(dāng)你真正開始使用 Vue3 寫項目時 你會發(fā)現(xiàn)他比 Vue2.x 方便的多
Vue3 的一大特性函數(shù) ---- setup
1、setup函數(shù)是處于 生命周期函數(shù) beforeCreate 和 Created 兩個鉤子函數(shù)之間的函數(shù) 也就說在 setup函數(shù)中是無法 使用 data 和 methods 中的數(shù)據(jù)和方法的
2、setup函數(shù)是 Composition API(組合API)的入口
3、在setup函數(shù)中定義的變量和方法最后都是需要 return 出去的 不然無法再模板中使用
二、setup函數(shù)的注意點(diǎn):
1、由于在執(zhí)行 setup函數(shù)的時候,還沒有執(zhí)行 Created 生命周期方法,所以在 setup 函數(shù)中,無法使用 data 和 methods 的變量和方法
2、由于我們不能在 setup函數(shù)中使用 data 和 methods,所以 Vue 為了避免我們錯誤的使用,直接將 setup函數(shù)中的this修改成了 undefined
3、setup函數(shù)只能是同步的不能是異步的
用法1:結(jié)合ref使用
<template> <div id="app"> {{name}} <p>{{age}}</p> <button @click="plusOne()">+</button> </div> </template> <script> import {ref} from 'vue' export default { name:'app', data(){ return { name:'xiaosan' } }, setup(){ const name =ref('小四') const age=ref(18) function plusOne(){ age.value++ //想改變值或獲取值 必須.value } return { //必須返回 模板中才能使用 name,age,plusOne } } } </script>
用法2:代碼分割
Options API 和 Composition API
Options API 約定:
我們需要在 props 里面設(shè)置接收參數(shù)
我們需要在 data 里面設(shè)置變量
我們需要在 computed 里面設(shè)置計算屬性
我們需要在 watch 里面設(shè)置監(jiān)聽屬性
我們需要在 methods 里面設(shè)置事件方法
你會發(fā)現(xiàn) Options APi 都約定了我們該在哪個位置做什么事,這反倒在一定程度上也強(qiáng)制我們進(jìn)行了代碼分割。
現(xiàn)在用 Composition API,不再這么約定了,于是乎,代碼組織非常靈活,我們的控制代碼寫在 setup 里面即可。
setup函數(shù)提供了兩個參數(shù) props和context,重要的是在setup函數(shù)里沒有了this,在 vue3.0 中,訪問他們變成以下形式: this.xxx=》context.xxx
我們沒有了 this 上下文,沒有了 Options API 的強(qiáng)制代碼分離。Composition API 給了我們更加廣闊的天地,那么我們更加需要慎重自約起來。
對于復(fù)雜的邏輯代碼,我們要更加重視起 Composition API 的初心,不要吝嗇使用 Composition API 來分離代碼,用來切割成各種模塊導(dǎo)出。
我們期望是這樣的:
importuseAfrom'./a'; importuseBfrom'./b'; importuseCfrom'./c'; exportdefault{ setup (props) { let{ a, methodsA } = useA(); let{ b, methodsB } = useA(); let{ c, methodsC } = useC(); return{ a, methodsA, b, methodsB, c, methodsC } } }
就算 setup 內(nèi)容代碼量越來越大,但是始終圍繞著大而不亂,代碼結(jié)構(gòu)清晰的路子前進(jìn)。
到此這篇關(guān)于vue3.0中setup使用的文章就介紹到這了,更多相關(guān)vue3.0 setup使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue.js 2.0 移動端拍照壓縮圖片上傳預(yù)覽功能
這篇文章主要介紹了Vue.js 2.0 移動端拍照壓縮圖片上傳預(yù)覽功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03vue3中實現(xiàn)使用element-plus調(diào)用message
這篇文章主要介紹了vue3中實現(xiàn)使用element-plus調(diào)用message,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09vue實現(xiàn)導(dǎo)出Word文件(數(shù)據(jù)流方式)
這篇文章主要介紹了vue實現(xiàn)導(dǎo)出Word文件(數(shù)據(jù)流方式),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06elementUI中el-dropdown的command實現(xiàn)傳遞多個參數(shù)
這篇文章主要介紹了elementUI中el-dropdown的command實現(xiàn)傳遞多個參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08defineProperty和Proxy基礎(chǔ)功能及性能對比
這篇文章主要為大家介紹了defineProperty和Proxy基礎(chǔ)功能及性能對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08