kliping.pro
  • Docs
  • Explore
  • Builder
  • Directory
  • Colors
  • Typeset
Saved
Hooks
  • Getting Started2
  • State7
  • Advanced6
  • Lifecycle16
  • Browser21
  • Development1
  • Third-Party4
  • Libraries4
  • isBrowser
  • createContext
  • getTargetElement
  • tryOnMounted
  1. Hooks
  2. Libraries
  3. createContext

createContext

PreviousNext

Membagi nilai ke seluruh pohon komponen tanpa mengoper prop.

Tidak ada yang perlu dipasang.

Vue sudah menyediakan padanannya — provide() dan inject(). Halaman ini menjelaskan cara memakainya.

Vue menyediakannya sebagai dua fungsi bawaan:

ts
// Di komponen induk
import { provide } from 'vue'
provide('theme', themeRef)

// Di komponen anak, sedalam apa pun
import { inject } from 'vue'
const theme = inject('theme')

Aman tipe ​

Pakai InjectionKey supaya tipenya ikut terbawa, dan salah ketik jadi error saat build — bukan undefined saat dijalankan.

ts
// keys.ts
import type { InjectionKey, Ref } from 'vue'

export interface Theme {
  dark: Ref<boolean>
  toggle: () => void
}

export const themeKey = Symbol('theme') as InjectionKey<Theme>
ts
provide(themeKey, { dark, toggle })   // induk
const theme = inject(themeKey)          // anak — tipenya sudah `Theme`

Kalau wajib ada ​

inject mengembalikan undefined kalau tidak ada yang menyediakannya. Untuk nilai yang memang wajib, buat pembungkus kecil yang melempar dengan pesan yang menyebut sebabnya:

ts
export function useTheme() {
  const theme = inject(themeKey)
  if (!theme)
    throw new Error('useTheme() was called outside a theme provider')
  return theme
}

Itu yang membedakan error yang bisa langsung dibaca dari Cannot read properties of undefined di tempat yang jauh dari sebabnya.

Requirements ​

RequirementValue
ProjectVue 3.5+, alias @ — disiapkan kliping init
Fileslib/create-context.ts

API Reference ​

ts
export function createContext<T>(rootName: string)

Parameters ​

ParameterTypeDefaultDescription
rootNamestring—Name of the root component, used in the error when a part is outside it.

Returns ​

readonly [(value: T) => void, (consumerName: string) => T, () => T \| null] — [provide, inject, injectOptional]: inject throws outside the root, injectOptional returns null.

PreviousisBrowserNext getTargetElement

On This Page

Aman tipeKalau wajib adaRequirementsAPI ReferenceParametersReturns

© 2026 Kliping. Free components are open source under the MIT License.

LicenseCreditsRoadmap