Skip to content

组合式函数

项目封装了一系列可复用的组合式函数(Composables),提供常用功能。

useNavbar

导航栏高度计算,支持微信小程序胶囊按钮避让。

typescript
import { useNavbar } from "@/composables/useNavbar"

const { totalHeight, contentPaddingTop, menuButtonRightGap } = useNavbar()

useCountdown

倒计时功能,常用于验证码发送。

typescript
const { countdown, isRunning, start, stop } = useCountdown(60)

// 开始倒计时
start()

// 停止倒计时
stop()

useNavigation

页面跳转封装,统一处理登录检查和外部链接。

typescript
const { handleNavClick } = useNavigation()

// 在模板中使用
handleNavClick({ url: '/pages/user/index' })

useRequest

请求状态管理,自动处理 loading 和错误。

typescript
const { data, loading, error, execute } = useRequest(
  () => UserAPI.getUserInfo()
)

// 手动执行
await execute()

// 立即执行
const { data } = useRequest(() => UserAPI.getUserInfo(), { immediate: true })

useLoading

全局 loading 状态管理,支持并发计数。

typescript
const { isLoading, start, stop, wrap } = useLoading()

start('加载中...')
await fetchData()
stop()

// 包装异步函数
const result = await wrap(fetchData())

useTabbar

TabBar 配置和状态管理。

typescript
const { tabbarList, setTabbarItemActive, setTabbarItem } = useTabbar()

// 切换到工作台
setTabbarItemActive('work')

// 设置徽标数字
setTabbarItem('work', 5)

useTheme

主题切换功能,支持明暗模式和主题色。

typescript
const { isDark, currentThemeColor, toggleTheme, setThemeColor } = useTheme()

// 切换明暗模式
toggleTheme()

// 设置主题色
setThemeColor({ name: '蓝色', color: '#4d80f0' })

useSse

SSE 实时通信封装,用于接收服务端推送事件。

typescript
const { isConnected, connect, disconnect, on } = useSse()

// 连接
connect()

// 订阅事件
const unsubscribe = on('dict', (data) => {
  console.log('字典变更:', data)
})

// 取消订阅
unsubscribe()

// 断开连接
disconnect()

详细用法参见 实时通信

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者