跳至主要内容

[vue] Vue Provide 與 Inject 用法

說明

Vue 與 React 一樣,都會遇到 Prop Drilling 的問題,React 的原生解法是使用 context,Vue 則是使用 provideinject

provide

先在父元件使用 provide 定義要給子元件的資料

我們使用了 provide 定義了 title,而 title 的值為 測試標題

AppCourse.vue
<template>
<AppCourseCard />
</template>

<script setup>
import { provide } from 'vue'
import AppCourseCard from './AppCourseCard.vue'

provide('title', '測試標題')
</script>

inject

現在只要在 AppCourse 底下的子元件,都能使用 inject 來取得 title

AppCourseCard.vue
<template>
<AppCourseCardTitle />
{{title}}
</template>

<script setup>
import AppCourseCardTitle from './AppCourseCardTitle.vue'

import { inject } from 'vue'

const title = inject('title')
</script>