Skip to content

reactivity API

TIP

@elfui/reactivity 是可以独立使用的响应式入口。应用和宏组件优先从 @elfui/core 导入;只有确实需要脱离组件运行时使用响应式系统时,才直接依赖这个包。

稳定应用 API

状态

useRefuseReactiveuseShallowRefuseShallowReactive

派生与副作用

useComputeduseEffectwatchonWatcherCleanup

自动追踪副作用使用 useEffect();需要明确数据源、新旧值、deepimmediate 时使用 watch()

调度

batchnextTickqueueJobqueuePostFlushJobflushSync

batch(() => { ... }) 会把多次响应式写入合并为一次下游 effect 刷新,并返回回调结果。嵌套 batch 只在最外层结束时刷新;computed 会立即失效,因此事务内读取仍是最新值。确实需要在 batch 结束前刷新时,使用 flushSync() 作为显式逃生口。

模板事件处理器会自动包在 batch 中。服务、适配器或命令式代码需要同样的事务语义时,直接调用 batch()

工具

readonlyisReadonlyisStateisRefisReactiveisProxymarkRawtoRawunreftoValue

作用域

effectScopegetCurrentScopeonScopeDispose

高级底层 API

WARNING

以下符号是公开导出,主要给框架扩展、适配器和诊断工具使用;普通业务代码不应直接调用或依赖它们的内部状态。

  • effect: effectstopReactiveEffectisTrackingpauseTrackingresetTrackinguntrack
  • 依赖图: tracktriggertriggerAll
  • scope internals: EffectScoperecordEffectScope
  • scheduler internals: isSyncMode
  • state flags: REACTIVE_FLAGREF_FLAGSTATE_FLAG

TIP

这些 API 仍受 beta 版本约束;它们不是 @elfui/core 主入口的推荐 API,未来若要调整,会在 @elfui/reactivity 的变更记录中单独说明。