🐉
Vue3 PropsとEmit
作成日:
2023/10/10
0
PropsとEmit コンポーネント間のデータ受け渡し方
今回はコンポーネント間でのデータのやりとりの仕方
Props
親<index.htmlというかApp.vue>から子<components.vue>にデータを引き渡す時に使う
↓子コンポーネント
<template>
<p :class="props.class">{{ props.message }}{{ props.name }}</p>
</template>
<script setup lang="ts">
const props = defineProps({
message: {
type: String,
default: ""
},
name: String,
class: String,
})
</script>
interfaceを使った方が送りたい値が分かりやすく楽にまとめれる
<template>
<section>
<h2>Propsの処理</h2>
<p :class="aaa.class">{{ aaa.message }}{{ aaa.name }}</p>
</section>
</template>
<script setup lang="ts">
interface Props {
class: String;
message: String;
name?: String;// ?をつけると親にデータがなくても大丈夫 必須ではないになる
}
const aaa = defineProps<Props>();
</script>
</script>
↓親コンポーネント
<子コンポーネント名 class="active" message="こんにちは" name="vvv" />
詳しく書かれている参考サイトへ
Emit
子<components.vue>から親<index.htmlというかApp.vue>にデータを引き渡す時に使う
App.vue(props) → Hello.vue(emit) → App.vue のような流れ
イベント処理に使う感じ
↓子コンポーネント
<template>
<button @click="emitSubmit">送信</button>
</template>
<script setup lang="ts">
// 親で使う属性を入れる
const emit = defineEmits(["submit"])
const emitSubmit = function():void {
emit("submit")
}
</script>
親コンポーネント
<template>
<子コンポーネント名 v-on:`emitで渡した変数名`="親内にある関数など" />
<p>{{content}}</p>
</template>
<script setup lang="ts">
import {ref} from "vue";
const content = ref<string|number>('')
const 親内にある関数など = function():void {
console.log("emit");
content.value = "emit"
}
</script>
感想
Propsは動きやどう言う時に使うと便利などはわかるが
Emitに関してはまだよくわかっていない。
今後勉強して慣れていくしかないだろう。
フロントエンドエンジニアを頑張って勉強中。
最近はVueやNuxtを勉強中です。
コミュニティなどあれば参加してみたいと思ってます。
どうぞ、生暖かい目で見ていただけると幸いです。