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

vue3+ts深入組件Props實(shí)例詳解

 更新時間:2023年09月02日 10:49:51   作者:一花一world  
Props是組件之間進(jìn)行數(shù)據(jù)傳遞的一種方式,可以將數(shù)據(jù)從父組件傳遞給子組件,這篇文章主要介紹了vue3+ts深入組件Props的實(shí)例詳解,需要的朋友可以參考下

在Vue 3和TypeScript中,深入了解組件的Props是非常重要的。Props是組件之間進(jìn)行數(shù)據(jù)傳遞的一種方式,可以將數(shù)據(jù)從父組件傳遞給子組件。
首先,在Vue 3中定義Props的方式有所改變。在組件的選項中,我們可以使用props屬性來定義Props的類型和驗證規(guī)則。例如:

import { defineComponent, PropType } from 'vue';
export default defineComponent({
  props: {
    // 基本類型的Props
    name: {
      type: String,
      required: true
    },
    age: {
      type: Number,
      default: 18
    },
    // 自定義類型的Props
    person: {
      type: Object as PropType<{ name: string, age: number }>,
      required: true
    },
    // 數(shù)組類型的Props
    hobbies: {
      type: Array as PropType<string[]>,
      default: () => []
    }
  },
  // ...
});

在上面的例子中,我們定義了幾個不同類型的Props。name是一個必需的字符串類型的Props,age是一個可選的數(shù)字類型的Props,默認(rèn)值為18。person是一個必需的自定義類型的Props,它是一個包含nameage屬性的對象。hobbies是一個可選的數(shù)組類型的Props,默認(rèn)值為空數(shù)組。

在使用Props時,我們可以在子組件中通過props選項來訪問它們。例如:

import { defineComponent } from 'vue';
export default defineComponent({
  props: ['name', 'age', 'person', 'hobbies'],
  // ...
  created() {
    console.log(this.name); // 訪問字符串類型的Props
    console.log(this.age); // 訪問數(shù)字類型的Props
    console.log(this.person); // 訪問自定義類型的Props
    console.log(this.hobbies); // 訪問數(shù)組類型的Props
  }
});

在上面的例子中,我們通過props選項將Props聲明為組件的屬性。然后,在組件的created生命周期鉤子中,我們可以通過this關(guān)鍵字來訪問這些Props。

此外,還可以使用TypeScript的類型注解來提供Props的類型檢查。例如:

import { defineComponent } from 'vue';
interface Person {
  name: string;
  age: number;
}
export default defineComponent({
  props: {
    person: {
      type: Object as () => Person,
      required: true
    }
  },
  // ...
});

在上面的例子中,我們使用了TypeScript的接口來定義Person類型,并在props選項中使用了類型注解來指定person的類型為Person。

總結(jié)一下,在Vue 3和TypeScript中,我們可以使用props選項來定義和驗證組件的Props??梢允褂貌煌愋偷腜rops,包括基本類型、自定義類型和數(shù)組類型。在子組件中,可以通過props選項來訪問這些Props,并使用TypeScript的類型注解來提供類型檢查。這樣可以更安全和可靠地進(jìn)行組件間的數(shù)據(jù)傳遞。

傳遞靜態(tài)prop

在Vue 3和TypeScript中,如果要傳遞靜態(tài)的Props,可以在父組件中直接在子組件的標(biāo)簽上使用Props的語法來傳遞靜態(tài)值。

例如,假設(shè)我們有一個子組件ChildComponent,它有一個接受字符串類型的Props message。

import { defineComponent, PropType } from 'vue';
export default defineComponent({
  props: {
    message: {
      type: String,
      required: true
    }
  },
  // ...
});

在父組件中,可以在子組件的標(biāo)簽上使用Props的語法來傳遞靜態(tài)值。

<template>
  <div>
    <child-component message="Hello, World!"></child-component>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  }
};
</script>

在上面的例子中,我們在ChildComponent的標(biāo)簽上使用message屬性,并傳遞了靜態(tài)的字符串值"Hello, World!"。

在子組件中,可以通過props選項來接收傳遞的靜態(tài)Props。

import { defineComponent } from 'vue';
export default defineComponent({
  props: ['message'],
  // ...
  created() {
    console.log(this.message); // 輸出:Hello, World!
  }
});

在上面的例子中,我們在子組件的created生命周期鉤子中,通過this.message來訪問傳遞的靜態(tài)Props。

傳遞非字符串類型,使用v-bind

如果要傳遞非字符串類型的Props,并且希望使用動態(tài)的值,可以使用v-bind指令來綁定Props。

例如,假設(shè)我們有一個子組件ChildComponent,它有一個接受數(shù)字類型的Props count。

import { defineComponent, PropType } from 'vue';
export default defineComponent({
  props: {
    count: {
      type: Number,
      required: true
    }
  },
  // ...
});

在父組件中,可以使用v-bind指令來綁定Props的值。

<template>
  <div>
    <child-component :count="totalCount"></child-component>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      totalCount: 10
    };
  }
};
</script>

在上面的例子中,我們使用v-bind指令來綁定子組件的count屬性,并將其值綁定到父組件的totalCount變量上。

在子組件中,可以通過props選項來接收傳遞的動態(tài)Props。

import { defineComponent } from 'vue';
export default defineComponent({
  props: ['count'],
  // ...
  created() {
    console.log(this.count); // 輸出:10
  }
});

在上面的例子中,我們在子組件的created生命周期鉤子中,通過this.count來訪問傳遞的動態(tài)Props。

prop校驗,單向數(shù)據(jù)流

在Vue中,可以通過使用props選項來對Props進(jìn)行校驗,以確保傳遞給組件的數(shù)據(jù)滿足特定的要求。

例如,假設(shè)我們有一個子組件ChildComponent,它有一個接受數(shù)字類型的Props count,并且要求傳遞的值必須大于0。

import { defineComponent, PropType } from 'vue';
export default defineComponent({
  props: {
    count: {
      type: Number,
      required: true,
      validator: (value: number) => value > 0
    }
  },
  // ...
});

在上面的例子中,我們在props選項中定義了count屬性,并指定了它的類型為Number,并且設(shè)置了required: true,表示這個Props是必需的。同時,我們還使用了一個自定義的校驗函數(shù)validator,該函數(shù)接受傳遞的值作為參數(shù),返回一個布爾值,用于校驗傳遞的值是否滿足要求。

在父組件中,如果傳遞的Props不滿足校驗要求,Vue會在控制臺中輸出警告信息。

<template>
  <div>
    <child-component :count="totalCount"></child-component>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      totalCount: -5
    };
  }
};
</script>

在上面的例子中,我們在父組件中將totalCount設(shè)置為-5,這違反了子組件的校驗規(guī)則。

到此這篇關(guān)于vue3+ts深入組件Props實(shí)例詳解的文章就介紹到這了,更多相關(guān)vue3+ts深入組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3下watch的使用方法示例

    vue3下watch的使用方法示例

    vue3中的watch是一個組合式的API使用時需要引入,下面這篇文章主要給大家介紹了關(guān)于vue3下watch使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • vue父組件異步傳遞props值,子組件接收不到解決方案

    vue父組件異步傳遞props值,子組件接收不到解決方案

    這篇文章主要介紹了vue父組件異步傳遞props值,子組件接收不到解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue使用new Image()實(shí)現(xiàn)圖片預(yù)加載功能

    Vue使用new Image()實(shí)現(xiàn)圖片預(yù)加載功能

    這篇文章主要介紹了如何在 Vue 中實(shí)現(xiàn)圖片預(yù)加載的一個簡單小demo以及優(yōu)化方案,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • vue實(shí)現(xiàn)百分比占比條效果

    vue實(shí)現(xiàn)百分比占比條效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)百分比占比條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • VUE 記賬憑證模塊組件的示例代碼

    VUE 記賬憑證模塊組件的示例代碼

    這篇文章主要介紹了VUE記賬憑證模塊組件的實(shí)例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • vue,uniapp--js禁止頁面滾動,取消滾動方式

    vue,uniapp--js禁止頁面滾動,取消滾動方式

    這篇文章主要介紹了vue,uniapp--js禁止頁面滾動,取消滾動方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Pinia進(jìn)階setup函數(shù)式寫法封裝到企業(yè)項目

    Pinia進(jìn)階setup函數(shù)式寫法封裝到企業(yè)項目

    這篇文章主要為大家介紹了Pinia進(jìn)階setup函數(shù)式寫法封裝到企業(yè)項目實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 示例解析Ant?Design?Vue組件slots作用

    示例解析Ant?Design?Vue組件slots作用

    這篇文章主要為大家通過示例解析Ant?Design?Vue組件slots作用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Vue.js函數(shù)式組件的全面了解

    Vue.js函數(shù)式組件的全面了解

    函數(shù)式組件就是函數(shù)是組件,組件是函數(shù),它的特征是沒有內(nèi)部狀態(tài)、沒有生命周期鉤子函數(shù)、沒有this(不需要實(shí)例化的組件),這篇文章主要給大家介紹了關(guān)于Vue.js函數(shù)式組件的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Vuex存值取值與異步請求處理方式

    Vuex存值取值與異步請求處理方式

    本文將詳細(xì)介紹Vuex的使用方法,包括參數(shù)值的獲取、修改,以及異步數(shù)據(jù)處理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論

家居| 古丈县| 弥勒县| 定边县| 准格尔旗| 正定县| 灵寿县| 娄烦县| 西充县| 陈巴尔虎旗| 东港市| 乌拉特中旗| 乐清市| 包头市| 稻城县| 肥西县| 吉隆县| 江西省| 沿河| 中方县| 乐业县| 临漳县| 武隆县| 苏州市| 乌拉特前旗| 巫山县| 惠安县| 东辽县| 西乡县| 竹溪县| 时尚| 宁乡县| 砀山县| 阜宁县| 定结县| 东方市| 五河县| 元朗区| 奉贤区| 宝清县| 岳西县|