Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@kambe0331

$emitで複数の値を親コンポーネントに渡す方法

はじめに

子のコンポーネントから親コンポーネントに値を渡す場合は、emitを使用することが多いと思います。今回は、複数の値を渡したい時があったので、アウトプットとして記述します。
ちなみにemit自体の解説は割愛しますので、ご了承ください。

サンプルコード

Child.vue
<template>
  <div>
    <p>Child</p>
    <button @click="click">親にメッセージを渡す</button>
  </div>
</template>

<script>
export default {
  name: 'Child',
  data() {
    return {
      message1: 'メッセージ1',
      message2: 'メッセージ2',
    }
  },
  methods: {
    click() {
      this.$emit('click', this.message1, this.message2)
    },
  },
}
</script>

↑emitの第2引数以降にカンマ区切りで複数の値を渡してあげます。

Parent.vue
<template>
  <div>
    <P>Parent</P>
    <child @click="click"></child>
  </div>
</template>

<script>
import Child from './Child'

export default {
  name: 'Parent',
  components: {
    Child,
  },
  methods: {
    click(...args) {
      console.log(args)
      // 出力 ['メッセージ1','メッセージ2']
      const [message1, message2] = args
      console.log(message1,message2)
      // 出力 メッセージ1 メッセージ2
    },
  },
}
</script>

↑click関数の引数では、レスト構文を使用して、子から渡した複数の値を配列で受け取ることができます。
その後、分割代入を使用し、配列の要素一つずつを取り出して各々の変数に代入しています。
あとは、親コンポーネントで各自自由に使ってくださいませ🙇‍♂️
はい、以上になります。

おわりに

短い記述になりますが、読んでくださりありがとうございます!
もし内容等に誤りがありましたら、ご指摘頂けると助かります。よろしくお願いいたします。

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kambe0331
のんびりwebエンジニア
qnote
猫と音楽とITをテーマにiOS/Android/Unity/Web/デザインの受託開発をやり続けて13年目の町工場的会社です。従業員の大半は猫です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?