最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3中使用props和emits并指定其類型與默認(rèn)值

 更新時間:2023年04月06日 09:04:19   作者:魚干拌飯  
props是Vue3中的一個重要概念,它允許我們將數(shù)據(jù)從父組件傳遞到子組件,下面這篇文章主要給大家介紹了關(guān)于vue3中使用props和emits并指定其類型與默認(rèn)值的相關(guān)資料,需要的朋友可以參考下

前言

本文主要描述 vue3 中 defineProps 與 defineEmits 分別在 JS 環(huán)境和 TS 環(huán)境中的使用方法。

defineProps 的使用

defineProps在使用的時候無需引入,默認(rèn)是全局方法。

  • 在 js 開發(fā)的 vue3 項目中使用
const props = defineProps({
  attr1: {
    type: String, // S 必須大寫
    default: "",
  },
  attr2: Boolean,
  attr3: {
    type: Number,
    required: true,
  },
});

js 環(huán)境中使用與 vue2 的使用方法類似,只是選項式 API 換成了組合式 API。定義 props 類型與默認(rèn)值都與 vue2 類型,vue3 中使用的是definePropsAPI,在此不多介紹。

  • 在 ts 開發(fā)的 vue3 項目中使用
interface DeatilInf {
  aaa: string;
  bbb: number;
}

const props = withDefaults(
  // 參數(shù)一:定義props類型:? 代表非必傳字段, :號后面緊跟的是數(shù)據(jù)類型或自定義接口, | 或多種類型
  defineProps<{
    name: string;
    age?: number;
    detail?: DeatilInf | any;
  }>(),
  // 參數(shù)二:指定非必傳字段的默認(rèn)值
  {
    age: 18,
    detail: {},
  }
);

使用 typeScript 開發(fā) vue3 項目定義 props 主要使用的 API 有兩個: defineProps 定義接收的 props 、withDefaults 定義接收的類型。

當(dāng)然,你也可以使用上述 js 環(huán)境使用的方法定義 props,但這樣做就失去了使用 TS 的意義了。

defineEmits 的使用

與 vue2 不同:vue3 在觸發(fā)事件之前需要定義事件。同樣在 vue3 中 defineEmits 也是全局 API

  • js 中使用
const emits = defineEmits(["change", "input"]);
emits("chage", "data");
emits("input", { data: 123 });
  • TS 中使用
enum EventName {
  CHANGE = "change",
  INPUT = "input",
}

const emits = defineEmits<{
  (event: EventName.CHANGE, data: string[]): void;
  (event: EventName.INPUT, data: string): void;
}>();

emits(EventName.CHANGE, ["data"]);
emits(EventName.INPUT, "123");

上面的代碼中使用了枚舉 enum 避免"魔法字符串"的出現(xiàn)。值得一提,ts 中也可以使用 js 的方式使用,那么就沒有發(fā)揮出‘T’的作用。

尤其在大型項目里面觸發(fā)數(shù)據(jù)的類型可能會出現(xiàn)意想不到的 bug,然后定位 bug 可能得花上好幾個小時。也可能會出現(xiàn)觸發(fā)事件的事件名字符串寫錯(俗稱魔法字符串)導(dǎo)致達(dá)不到預(yù)期效果。

總結(jié)

經(jīng)過上述代碼示例,可能覺得 ts 的寫法似乎更加麻煩了,不如 js 來的快。但是,我個人認(rèn)為使用 ts 開發(fā)不僅僅是提示友好,而且能有效避開很多的坑??芍^:"未雨綢繆"勝過“亡羊補牢”的好。

到此這篇關(guān)于vue3中使用props和emits并指定其類型與默認(rèn)值的文章就介紹到這了,更多相關(guān)vue3使用props和emits內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Element中Slider滑塊的具體使用

    Element中Slider滑塊的具體使用

    這篇文章主要介紹了Element中Slider滑塊的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue實現(xiàn)背景更換顏色操作

    Vue實現(xiàn)背景更換顏色操作

    這篇文章主要介紹了Vue實現(xiàn)背景更換顏色操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 詳解Vue如何實現(xiàn)顏色選擇與調(diào)色板功能

    詳解Vue如何實現(xiàn)顏色選擇與調(diào)色板功能

    顏色選擇和調(diào)色板是Web開發(fā)中常用的功能,Vue作為一個流行的JavaScript框架,可以方便地實現(xiàn)顏色選擇和調(diào)色板功能,本文講講如何在Vue中進行顏色選擇和調(diào)色板吧
    2023-06-06
  • Vue父組件如何獲取子組件中的變量

    Vue父組件如何獲取子組件中的變量

    這篇文章主要為大家詳細(xì)介紹了Vue父組件如何獲取子組件中的變量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Vue vxe-table使用問題收錄小結(jié)

    Vue vxe-table使用問題收錄小結(jié)

    這篇文章主要為大家介紹了Vue vxe-table使用問題收錄小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • electron中使用本地數(shù)據(jù)庫的方法詳解

    electron中使用本地數(shù)據(jù)庫的方法詳解

    眾所周知,electron是可以開發(fā)桌面端的框架,那我們有一些數(shù)據(jù)不想讓別人看到,只能在自己的電腦上展示時怎么辦呢,這個時候就可以用到本地數(shù)據(jù)庫,本文將以sqlite3為例介紹一下electron如何使用本地數(shù)據(jù)庫
    2023-10-10
  • vue實現(xiàn)通訊錄功能

    vue實現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)通訊錄功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • vue.config.js里面的devserver如何配置

    vue.config.js里面的devserver如何配置

    本文介紹了vue.config.js中devServer的常見配置方式,包括基本配置、代理配置、熱模塊替換、靜態(tài)資源服務(wù)、HTTPS配置、多代理配置以及其他配置項,幫助開發(fā)者根據(jù)項目需求進行定制
    2025-01-01
  • Vue項目中v-model和sync的區(qū)別及使用場景分析

    Vue項目中v-model和sync的區(qū)別及使用場景分析

    在Vue項目中,v-model和.sync是實現(xiàn)父子組件雙向綁定的兩種方式,v-model主要用于表單元素和子組件的雙向綁定,通過modelValue和update:modelValue實現(xiàn),.sync修飾符則用于同步prop值,適合在子組件內(nèi)更新父組件prop值的場景,通過update:propName事件實現(xiàn)
    2024-11-11
  • vue通過路由實現(xiàn)頁面刷新的方法

    vue通過路由實現(xiàn)頁面刷新的方法

    本篇文章主要介紹了vue通過路由實現(xiàn)頁面刷新的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

钟山县| 尉氏县| 耿马| 泰来县| 台安县| 佳木斯市| 万源市| 阿克陶县| 无锡市| 正镶白旗| 安平县| 图木舒克市| 贵阳市| 洱源县| 凤城市| 天等县| 滕州市| 济阳县| 东丰县| 永登县| 梓潼县| 金门县| 巨鹿县| 临桂县| 二连浩特市| 玛曲县| 涪陵区| 宝清县| 五指山市| 塔河县| 东兰县| 万全县| 诏安县| 罗平县| 怀宁县| 道孚县| 太谷县| 东阳市| 绵阳市| 班玛县| 外汇|