コンパイラかく語りき

import { Fun } from 'programming'

【Vue.js】メソッドを子コンポーネントから呼ぶ

コンポーネントで定義したメソッドを、子コンポーネントから呼ぶ方法について。

Props として渡す

まず、 props として渡す方法。React エンジニアにとっては馴染みのあるやり方。

<template>
    <Child :function="someFunction" />
</template>

export default {
    methods: {
        someFunction() { ... }
    }
}

Events を経由する

次に events 経由で呼ぶ方法。こちらの方が Vue らしいやり方のようです。

// 親コンポーネント
<template>
  <Child @fire="someFunction" />
</template>

export default {
  methods: {
    someFunction() {
      console.log('呼ばれた');
    }
  }
};

// 子コンポーネント
<template>
  <div v-on:click="handleClick" />
</template>

export default {
  methods: {
    handleClick() {
      this.$emit('fire');
    }
  }
}

コンポーネントで定義した関数を、子コンポーネントから $emit して呼ぶようにしています。

もちろん、 $emit の対象となるイベント名は任意のもので大丈夫です。

参考

How to Pass a Function as a Prop in Vue - michaelnthiessen.com