电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue3 Composition API的使用簡介

瀏覽:47日期:2022-10-01 11:19:33

vue3.0在7月發布了rc版本,vue-cli4.5后也支持選擇vue3作為備選版本可以體驗了,vue3的正式版本相必也不遠了。學不動了呀!!!!相比vue2.0版本(Option API),Composition API(組合API)算是3.0的重大變更之一了。

概述

Composition API 主要靈感來源于React Hooks,目的是通過一組低侵入式的、函數式的 API,使得我們能夠更靈活地「組合」組件的邏輯。

示例

<template> <div>{{count}}</div> <button @click='addCount'>添加</button></template><script lang='ts'>import { defineComponent, ref, onMounted } from ’vue’;export default defineComponent({ name: ’App’, setup () { const count = ref(0) const getCount = () => { count.value = Math.floor(Math.random() * 10) } const addCount = () => { count.value++ } onMounted(() => { getCount() }) return { count, addCount } }});</script>

Composition API顧名思義就是不再傳入data、mounted等參數,通過引入的ref、onMounted等方法實現數據的雙向綁定、生命周期函數的執行。

為什么需要

1.在組件比較復雜的情況下,可以將邏輯代碼合到一起去,而不會被option強行分隔。這提高了代碼質量的上限,同時也拉低了代碼質量的下限。來自官方的一張對比圖:

Vue3 Composition API的使用簡介

2.更好的進行復用。

在vue2中,想要復用部分邏輯的代碼,都是通過mixin進去。但mixin進去的內容實際上很不直觀,而且相同命名會被覆蓋。而通過composition API,因為所有的方法都是引入的,可以將單獨某個邏輯進行封裝。例如對發送驗證碼倒計時功能進行封裝。

<template> <input type='number' placeholder='請輸入驗證碼'> <button v-if='count'>{{count}}秒后可重新發送</button> <button v-else @click='startCount'>發送驗證碼</button></template><script lang='ts'>import { defineComponent, ref, reactive } from ’vue’;const userCountDown = () => { const count = ref(0) const countDown = (num: number) => { count.value = num num-- if (num > 0) { setTimeout(() => { countDown(num) }, 1000) } } const startCount = () => { // get verifyCode countDown(60) } return { count, startCount }}export default defineComponent({ name: ’Home’, setup () { const { count, startCount } = userCountDown() return { count, startCount } }});</script>

3.更好的typescript支持。不會再往vue原型上添加很多內容,而是通過引入的方式,類型定義會更清晰。

setup

setup是vue新增的一個選項,它是組件內使用Composition API的入口。setup是在創建vue組件實例并完成props的初始化之后執行。因為setup會在option api解析之前被調用,所以setup中的this會與options中得完全不一樣。為了避免混亂,在setup中不使用this。同時setup返回的值,可以在模板和其他option中使用。從設計上來說,vue官方是將所有的事情在setup里完成。setup返回值連接的是template模板與方法。

ref、reactive

既然不在傳入data,那么將數據創建和監聽響應式就需要通過vue暴露出來的功能 ref或reactive。兩者有所區別,ref用于基礎賦值類型的數據,而reactive用于引用類型的數據。

其中基礎賦值類型的值,在setup方法中,需要用 .value的方式進行獲取和修改。因為賦值類型的值如果return出去返回值,就失去了數據的雙綁定。但是在template中,可以進行直接訪問。

<template> <div>{{count}} <button @click='changeCount'>添加</button> </div> <div>學生的姓名是:{{student.name}}</div> <div>學生的年齡是:{{student.age}} <button @click='changeStudentAge(20)'>添加</button> </div></template><script lang='ts'>import { defineComponent, ref, reactive } from ’vue’;export default defineComponent({ name: ’Home’, setup () { const count = ref(0) const changeCount = () => { count.value = count.value + 1 } const student = reactive({ name: ’Bob’, age: 12 }) const changeStudentAge = (age: number) => { student.age = age } return { count, changeCount, student, changeStudentAge } }});</script>computed與watch

<template> <div>{{count}}</div> <div>{{doubleCount}}</div> <button @click='addCount'>添加</button></template><script lang='ts'>import { defineComponent, ref, computed, watchEffect, watch } from ’vue’;export default defineComponent({ name: ’App’, setup () { const count = ref(0) watch(count, () => { // 如多個則用數組的方式傳入[count, count1] console.log(’watch’, count.value) }) watchEffect(() => { console.log(’watchEffect’, count.value) }) const addCount = () => { count.value++ } const doubleCount = computed(() => { return count.value * 2 }) return { count, doubleCount, addCount } }});</script>

watch與watchEffect的差別是,watchEffect會立馬執行,執行中被讀取的響應式 數據會被觀測。而watch只有在watch對象有變化時才會執行。

生命周期 beforeCreate -> 使用 setup() created -> 使用 setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroyed -> onUnmounted errorCaptured -> onErrorCaptured

以上就是Vue3 Composition API的使用簡介的詳細內容,更多關于Vue3 Composition API的使用的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 临朐空调移机_空调维修「空调回收」临朐二手空调 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 广东成考网-广东成人高考网 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 温州富欧金属封头-不锈钢封头厂家| 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 |