Skip to content

钩子

SinleUI 采用 Vue3 组合式 API 设计,向组件与开发者暴露一组钩子,用于获取框架状态并在组件内响应式使用。所有 hooks 统一从插件入口导出:

typescript
import { useTheme, useStyle, useFactors, useHover, useResolve, useI18n } from '@/uni_modules/sinle-ui'

提示

框架内部组件同样通过这些 hooks 获取主题、乘数、解析等能力,因此任何修改都会自动触发依赖它的组件更新。

钩子总览

Hook功能描述来源
useTheme获取与切换当前主题(light / dark / auto)插件出口导出
useStyle获取当前风格与切换风格插件出口导出
useFactors响应式读取五个全局尺寸乘数插件出口导出
useHover统一点击态(按下反馈)机制插件出口导出
useResolve$ 前缀动态尺寸解析与颜色简写解析插件出口导出
useI18n组件语言响应式读取与翻译函数插件出口导出
useExternalStyle外部样式(UTSJSONObject / String)转样式字符串组件内部使用,可复用
useBacktop滚动容器与 sn-backtop 回顶联动机制组件内部使用,可复用

其中 useTheme / useStyle / useFactors / useHover / useResolve / useI18n 从插件入口 @/uni_modules/sinle-ui 导出,可直接在业务代码中使用;useExternalStyleuseBacktop 主要供框架内部组件复用,自定义组件开发时同样可以引入使用(从对应源文件路径导入)。

使用约定

  • hooks 必须在组件 <script setup>(或钩子)中调用,返回值中的响应式状态为 Vue computed / ref,在模板中自动解包。
  • 一个 hook 可多次调用,各调用之间共享同一框架全局状态。
  • 读取型返回值一律为 computed(只读)isDarkisAutostyleId、五个乘数、locale 等都不能直接 v-model,需用 :model-value + @change 回写,或自行包一层带 get/set 的 computed
  • 写入统一走框架 API:$snui 的属性与方法,或 hook 提供的 setter(setThemesetStyle 等)。
  • 框架内部还有若干仅供组件内部复用的工具型 hook(如 useExternalStyleuseBacktop),不在上表之外另行列举。

使用 MIT 协议