0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VueAdvent Calendar 2023

Day 9

【Vue.js Composition API】子コンポーネントで定義したメソッドを親コンポーネントから呼び出す

Last updated at Posted at 2023-12-09

はじめに

親コンポーネントに定義したメソッドを子コンポーネントから呼び出すのはよく見かける気がするのですが、逆はあまりないので、記録しておきます。

環境

  • Vue.js 3.2
  • Composition API

サンプル

子コンポーネント

Child.vue
<script setup>
const childMethod = () => {
    console.log("childコンポーネントのメソッド")
}

// defineExposeを使い、親コンポーネントからの呼び出しを可能にする
defineExpose({ childMethod });
</script>

親コンポーネント

Parent.vue
<script setup>
import { ref } from "vue";
import Child from './Child.vue';

// 子コンポーネントの情報を受け取る
const childRef = ref();

const onClick = () =>  {
    // 子コンポーネントのメソッドを呼び出す
    childRef.value.childMethod();
}
</script>

<template>
    <Child ref="childRef" />
    <button @click="onClick()">ボタン</button>
</template>

クリック時ではなく、マウント時に子コンポーネントのメソッドを呼び出したい場合は以下のようにします。

Parent.vue
<script setup>
import { ref } from "vue";
import Child from './Child.vue';

// 子コンポーネントの情報を受け取る
const childRef = ref();

onMounted(() => {
    childRef.value.childMethod();
})
<script>
<template>
    <Child ref="childRef" />
</template>

おわりに

公式サイトのdefineExposeのサンプルが簡素だったので困りましたが、以下の参考サイトのおかげで助かりました。

今回書いたサンプルも誰かの役に立てばと思い、簡単ではありますが残しておきます。

参考にさせていただいたサイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?