vue3編寫組件的幾種實現方式
一、選項式寫法
在 vue2.x 項目中使用的寫法就是選項API的寫法
(說明:類似于與vue2中的data里面寫的是定義的數據,methods里面寫的是處理數據的方法,每一個選項都只負責自己的部分)
- 優(yōu)點:易于學習,代碼位置固定,便于閱讀;
- 缺點:代碼組織性差,相似的邏輯代碼不便于復用;
vue3的選項式寫法中也可以有vue2的寫法
如果是新項目,應只選擇vue3的寫法(這里指vue3的項目)
代碼如下:
<template> <div> <div> num3: {{ num3 }} </div> <div> num2: {{ num2 }} </div> </div> </template> // 類似于vue2中,data中定義數據,methods就寫方法,每一個選項就寫對應所負責的東西 <script> import { ref } from "vue"; export default { // vue3代碼 props: { testProps: { type: Number, default: () => { return 123456; }, }, }, // 接收傳過來的數據 setup(props, context) { console.log("setup的props", props); // 父組件傳遞過來的數據,但是前提是需要在props進行數據的接收,否則無法使用 console.log("testProps", props.testProps); // 123456 console.log("setup的context", context); const num3 = ref(1); const addV3 = () => { num3.value++; }; return { num3, addV3 }; // 使用選項式寫法這里必須將數據return出去 }, // vue2代碼 data() { return { num2: 456, }; }, methods: { addV2() { this.num2++; // 這里面是可以使用this的,但是setup中不可以使用this }, }, mounted() {}, }; </script>
二、組合式寫法
組合式寫法(vue3特有的寫法)
- 優(yōu)點:一個功能邏輯的代碼組織寫在一起的,便于閱讀和維護;
- 缺點:需要有良好的代碼組織能力和拆分邏輯能力;
說明:使用選項式的寫法寫vue3里面可以有vue2的代碼,但是如果采用vue3語法糖的寫法里面是不能有vue2的寫法的;
<template> <div> <div> num: {{ num }} </div> <div> comValue: {{ comValue }} </div> </div> </template> // 組合式寫法 <script setup> // vue3的語法糖 import { computed, ref } from "vue"; const num = ref(123); const comValue = computed(() => { return num.value = num.value + 1; }) const add = () => { num.value++ // 使用ref定義的值需要使用點value的形式進行取值 } console.log(comValue.value); // 124 </script>
三、JSX寫法
使用defineComponent來書寫組件的代碼
<template> <div> <div> num: {{ num }} </div> </div> </template> <script> import { defineComponent, ref } from "vue"; // 在defineComponent使用vue3+vue2寫法 export default defineComponent({ setup() { const num = ref(12); return { num } }, data() { return { count: 1 } }, methods: { increment() { this.count++; } } }) // 直接在defineComponent使用vue3寫法 // export default defineComponent(() =>{ // const count = ref(0) // return { count } // }) </script>
總結
雖然vue3出來也有一段時間了,但是很多項目還是用的vue2,我覺得我們也應該慢慢的去使用vue3了,從vue2到vue3的過渡,要養(yǎng)成一個良好的編碼習慣;建議使用vue3組合式的語法糖寫法。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue中v-model指令與.sync修飾符的區(qū)別詳解
本文主要介紹了vue中v-model指令與.sync修飾符的區(qū)別詳解,詳細的介紹了兩個的用法和區(qū)別,感興趣的可以了解一下2021-08-08Vue?+?SpringBoot?實現文件的斷點上傳、秒傳存儲到Minio的操作方法
這篇文章主要介紹了Vue?+?SpringBoot?實現文件的斷點上傳、秒傳存儲到Minio的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-06-06vue報錯之exports is not defined問題的解決
這篇文章主要介紹了vue報錯之exports is not defined問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07