8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Vue.js】コンポーネントにおける親子間のデータの受け渡し方法を図解で理解する。

Last updated at Posted at 2021-02-03

#親から子にデーターを渡す

###静的なデーターを渡す

IMG_7242.jpg

1 子コンポーネントを読み込む
2 読み込んだ子コンポーネントを変数に格納し、componentsプロパティに格納
3 カスタムタグで、templeate内に子コンポーネントを読み込む
4 カスタム属性(number)に渡したい値("6")を設定
5 子コンポーネントのpropsプロパティーで親コンポーネントのカスタム属性の値を受け取る
6 受け取った値を、子コンポーネントのtemplateで表示する。

###動的なデーターを渡す

App.vue
<template>
  <div>
    <likeHeader v-bind:number="number"></likeHeader>
  </div>
</template>

<script>
import likeHeader from "./components/likeHeader.vue";

export default {
  name: "App",
  data() {
    return {
      number: 10,
    };
  },
  components: {
    likeHeader,
  },
};
</script>
likeHeader.vue
<template>
  <div>
    <p>{{ number }}</p>
  </div>
</template>

<script>
export default {
  props: ["number"],
};
</script>

カスタム属性numberをv-bindの引数にして、dataの返り値numberを値に設定する。

#子から親にデーターを渡す

5c9f5bf115ac60898309ba60c7bfa7ec.gif
上: 親コンポーネント
下: 子コンポーネント

IMG_4495C569C4C2-1.jpeg

1 子コンポーネントのクリックイベントにincrementメソッドを登録する。

2 incrementメソッドで、$emitメソッドによりカスタムイベントmy-clickを発火させる。

3 カスタムイベントmy-click引数は、$emitメソッドの第二引数に設定した"子から来たデータ"という文字列が渡る。

4 親コンポーネントでカスタムイベントmy-clickが発火し、登録しているメソッドrecieveWordが実行される。

5 引数には、"子から来たデータ"という文字列が入っている。

6 this.wordが更新される。

7 this.wordが更新されたので {{word}}の表示が変わる。

8
5
1

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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?