技術共有

Typescript Vue3 のdefineProps はパラメータを受け取り、withDefaults でデフォルト値を設定します

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1.defineProps: 受信親コンポーネント渡されるパラメータ

2. withDefaults: 受信時デフォルト値を設定する

これら 2 つの API は導入する必要がなく、セットアップで直接使用できます。

1. person.vue はパラメータを受け取ります

  1. <script setup lang="ts">
  2. import type {Persons} from '@/types'
  3. // 接收list + 可不传
  4. defineProps(["list"])
  5. // 接收list + 限制类型 + 必传
  6. defineProps<{list:Persons}>()
  7. // 接收list + 限制类型 + 设置默认值 + 可不传
  8. withDefaults(defineProps<{list:Persons}>(),{
  9. // 数组类型必须使用函数返回,其它不用
  10. list:()=>[{name: '张三',age: 18,id:"adwa1234"}]
  11. })
  12. // 将Props收到的值保存起来,是一个对象
  13. let propsData = defineProps(["persons"])
  14. console.log(propsData.list);
  15. </script>

2. App.vue はパラメータを渡します

  1. <script lang="ts" setup>
  2. let persons = [{
  3. name: '张三',
  4. age: 18,
  5. id:"adwa1234"
  6. }, {
  7. name: '李四',
  8. age: 20,
  9. id:"afehgr48"
  10. }, {
  11. name: '王五',
  12. age: 22,
  13. id:"imugk84"
  14. }]
  15. </script>
  16. <template>
  17. <Person :list="persons" />
  18. </template>

3. type.ts は型を定義します

  1. export interface PersonInter {
  2. id:string,
  3. name:string,
  4. age:number
  5. }
  6. export type Persons = Array<PersonInter>