🐕 Vue3 Proviteとinject
作成日: 2023/10/23
0

Proviteとinjectで階層が深いコンポーネントからデータ間通信をしよう

今回は前回のProps Emitの親と子のデータ間通信から孫やひ孫など階層が深くなった時に親にデータを渡す方法

Provite

// App.vue(親)
<script setup lang="ts">
import { provite } from "vue";
provide(/* key */ 'userName', /* value */ 'hellow')
</script>
<template>
<子コンポーネント名 />
</template>
// 子コンポーネント
<script setup lang="ts">
import 孫コンポーネント名 from './ProvideInjectChild01.vue'
</script>
<template>
  <section>
    <p>子コンポーネント</p>
    <ProvideInjectChild01 />
  </section>
</template>
// 孫コンポーネント
<script setup lang="ts">
import { inject } from 'vue';
const userName = inject(`userName`)
</script>
<template>
  <section>
    <p>孫コンポーネント</p>
    <p>ウェルカム{{ userName }}</p>
  </section>
</template>

##感想
階層が深くなるとpropsやEmitでは全部のコンポーネントで設定をする必要があるが、proviteとinjectは記述が楽になる。
しかし、どこで設定しているかコンポーネントを探す時に時間がかかりそう


フロントエンドエンジニアを頑張って勉強中。 最近はVueやNuxtを勉強中です。 コミュニティなどあれば参加してみたいと思ってます。 どうぞ、生暖かい目で見ていただけると幸いです。