组件:依赖注入

provide()

提供一个可被后代组件注入的值。

类型定义

ts
declare function provide(name: string | symbol, value: unknown): void

参数

参数类型说明
namestring | symbol依赖名称
valueunknown依赖值

示例

tsx
import { provide } from 'vitarx'

function Parent() {
  provide('theme', 'dark')
  provide(Symbol('config'), { debug: true })
  return <Child />
}

inject()

获取祖先组件提供的依赖值。

类型定义

ts
declare function inject<T>(name: string | symbol): T | undefined
declare function inject<T>(name: string | symbol, defaultValue: T): T
declare function inject<T extends AnyFunction>(
  name: string | symbol,
  defaultValue: T,
  treatDefaultAsFactory: true
): ReturnType<T>

参数

参数类型说明
namestring | symbol依赖名称
defaultValueT可选的默认值
treatDefaultAsFactoryboolean是否将默认值视为工厂函数

返回值

调用方式返回值说明
inject(name)T | undefined可能返回 undefined
inject(name, default)T有默认值保证非空
inject(name, factory, true)ReturnType<T>工厂函数的返回值

示例

tsx
import { inject } from 'vitarx'

function Child() {
  const theme = inject<string>('theme', 'light')
  const config = inject('config', () => ({ debug: false }), true)
  return <div>Theme: {theme}</div>
}

参考依赖注入