安装
环境要求
- React
^18.0.0或^19.0.0 - TypeScript
>= 5.0(可选,但推荐)
@lh-ui/react 的唯一运行时依赖是 @lh-ui/share —— 家族的框架无关共享层(组件逻辑、样式、主题、文案)。peer 依赖只有 react 与 react-dom。
包管理器安装
pnpm add @lh-ui/react
npm install @lh-ui/react
yarn add @lh-ui/react
bun add @lh-ui/react
引入样式
@lh-ui/react 采用按需引入策略(与 @lh-ui/vue2 对齐):包入口不注入任何样式,主题变量与组件样式分别引入。
// 主题变量(必需):包含设计令牌与暗色变量
import '@lh-ui/react/theme.css'
// 组件样式(按需):每用到一个组件就引一条
import '@lh-ui/react/style/button'
import '@lh-ui/react/style/input'
主题 CSS 与组件 CSS 的类名完全一致,因此你也可以直接从 @lh-ui/share 引入同一份 SCSS 源自行编译:
@use '@lh-ui/share/styles/theme/common/var.scss';
@use '@lh-ui/share/styles/button';
为什么不全量注入
React 生态的按需引入是主流,且全量样式 side-effect 会破坏 tree-shaking。把样式入口交给用户,打包器能精确裁剪未用到的组件样式。
暗色模式
暗色变量在 theme-dark.css,与 theme.css 互斥(二选一),或在运行时通过 useLhTheme / useLhPresetTheme 切换:
import { useLhTheme } from '@lh-ui/react'
function App() {
const { theme, toggleTheme } = useLhTheme()
return <button onClick={toggleTheme}>{theme === 'dark' ? '切换到日间' : '切换到夜间'}</button>
}
浏览器支持
现代浏览器(Chrome / Edge / Firefox / Safari 最近两个稳定版)。组件大量使用 CSS 自定义属性(var(--lh-*)),不支持 IE。