Skip to content

「コンポーネント」の質問 #74

Closed Answered by ubugeeei
tokuda109 asked this question in ハンズオン Q&A
Discussion options

You must be logged in to vote

@nanauda

ありがとうございます!
こちらは Emit で受け渡すデータの型を表しています!

<script setup lang="ts">
const emit = defineEmits<{ sendMessage: [] }>()
</script>

<template>
  <button type="button" @click="emit('sendMessage')">
    Click me
  </button>
</template>

の場合は emit でデータを渡していないと思うのですが,

<!-- Child.vue -->
<script setup lang="ts">
const emit = defineEmits<{ sendMessage: [string] }>()
</script>

<template>
  <button type="button" @click="emit('sendMessage', 'Hello, Vue!')">
    Click me
  </button>
</template>

の場合は 'Hello Vue!' という文字列を親に伝搬しています.これの型が [string] です.

さらに追加で複数渡したい場合は [string, number, string] のようにタプルの形式で定義することができます.
Labeled Tuple で名前をつけてあげるとよりわかりやすいです! (e.g. [msg: string, count: number, user: User])

参考:

Replies: 1 comment 2 replies

Comment options

You must be logged in to vote
2 replies
@ubugeeei
Comment options

Answer selected by ubugeeei
@nanauda
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
3 participants