LoginSignup
0
0

More than 1 year has passed since last update.

親子コンポーネント間でのデータの受け渡し

Last updated at Posted at 2021-05-09

親コンポーネントから子コンポーネントまで

main.js
import Vue from 'vue';
import App from './App.vue';
import LikeNumber from './components/LikeNumber.vue';

Vue.config.productionTip = false;
Vue.component("LikeNumber", LikeNumber);

new Vue({
  render: h => h(App)
}).$mount("#app");
App.vue
<template>
<div>
  <LikeHeader></LikeHeader>
  <h2>{{ number }}</h2>
  <LikeNumber number="6"></LikeNumber>
  <LikeNumber number="6"></LikeNumber>
</div>
</template>

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

export default {
  components: {
    LikeHeader: LikeHeader
  }
};
</script>

<style scoped>
  div {
    border: 1px solid blue;
  }
</style>
LikeNumber.vue
<template>
<div>
  <p>いいね({{ number / 2 }})</p>
  <button @click="increment">+1</button>
</div>
</template>

<script>
export default {
  props: ['number'],
  methods: {
    increment(){
      this.number += 1;
      }
    }
};
</script>

<style scoped>
  div{
    border:1px solid red;
  }
</style>
LikeHeader.vue
<template>
  <p>いいね数合計</p>
</template>

20210509-104027.png

propsはpropertyの略

<子>
(1)numberという値を使いたいところが「子」コンポーネントになります。今回はLikeNumber.vue
(2)propsは配列で使いたい値の名前を書きます。[子コンポーネントで定義します]
<親>
(1)属性名で定義する[]*なるべくケバブケースで定義する

propsの命名規則

キャメルケース ケバブケース
totalNumber total-number

*ブラウザに直接渡すものはHTMLの慣例としてケバブケースで書くようにする。
理由)ブラウザは大文字を認識できずに全て小文字で解釈するため。

(参考)App.vueのnumberを動的に表現するためv-bindを使用

<template>
<div>
  <LikeHeader></LikeHeader>
  <h2>{{ number }}</h2>
  <LikeNumber v-bind:number="number"></LikeNumber>
  <LikeNumber :number="number"></LikeNumber>
</div>
</template>

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

export default {
  data() {
    return {
    number: 10
    };
  },
  components: {
    LikeHeader: LikeHeader
  }
};
</script>

<style scoped>
  div {
    border: 1px solid blue;
  }
</style>

20210509-103929.png

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