解決したい問題
とても初歩的なことだとは思うのですが、いろいろ調べても解決しなかったのでこちらで質問させていただきます。
以下のコードは「definePropsとdefineEmitsを使って子コンポーネントと親コンポーネントでデータをやり取りし、ボタンを押すとカウントが1ずつ増えるコード」で思い通りに動作しているのですが、親コンポーネントの@clicked="addNumber"
の部分を@clicked="addNumber()"
に書き換えると、子コンポーネントから受け取る情報が「undefined」になってしまいます。
()
を付けるとなぜ子コンポーネントからデータを受け取れなくなってしまうのか知りたいです。
引数に関する初歩的な問題な気がするのですがご教授頂けると幸いです。
ChildComponent.vue
1<!--==================== template ====================--> 2<template> 3 <button @click="startingCustomEvent()">{{ number }}</button> 4</template> 5 6<!--==================== script ====================--> 7<script setup> 8const props = defineProps({ 9 number: { 10 type: Number, 11 required: true 12 } 13}); 14 15const emit = defineEmits(['clicked']); 16const startingCustomEvent = () => { 17 emit('clicked', props.number); 18}; 19</script>
ParentComponent.vue
1<!--==================== template ====================--> 2<template> 3 <p>{{ sum }}</p> 4 <MyCounter :number="1" @clicked="addNumber"/> 5</template> 6 7<!--==================== script ====================--> 8<script setup> 9import { ref } from 'vue'; 10import MyCounter from '../../components/ChildComponent.vue'; 11 12const sum = ref(0); 13const addNumber = (number) => { 14 sum.value += number; 15}; 16</script> 17コード

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2023/04/21 04:04
2023/04/21 04:14