Skip to content

Provide and Inject

provide/inject passes values down a component lineage without prop drilling. This lesson covers practical patterns, syntax, and mistakes to avoid.

Dependency Injection in Vue

provide/inject passes values down a component lineage without prop drilling.

Good for theme/form controllers; use Pinia for app-wide business state.

const key = Symbol('form')
provide(key, formApi)
const formApi = inject(key)

Symbol keys avoid collisions.

Defaults

inject(key, defaultValue)
  • Prefer Composition API + script setup.
  • Use computed for derived UI.
  • Keep side effects intentional.
  • Practice in a small Vite app.

Provide and Inject Cheatsheet

Quick reference for patterns covered in this lesson.

Item Example Purpose
provide parent Supply
inject descendant Read
Symbol key Safety
readonly protect API
app.provide global Plugin
vs pinia scope Choose

Mutability

Provide readonly state + methods to control updates.

Common Mistakes

  • String keys colliding.
  • Using provide/inject for unrelated domains better suited to Pinia.

Key Takeaways

  • Provide and Inject is important in Vue apps.
  • Practice in SFCs.
  • Prefer clear naming.
  • Check Vue docs for details.

Pro Tip

Document provided APIs like mini libraries.