快速開始
本頁假設你已經完成安裝,並引入了 theme.css 與用到的元件樣式。
無需 install
@lh-ui/react 沒有外掛機制:全部為命名匯出,直接按需引入即可。
import { LhButton } from '@lh-ui/react'
import '@lh-ui/react/theme.css'
import '@lh-ui/react/style/button'
export default function App() {
return <LhButton type="primary">开始使用</LhButton>
}
受控與非受控
受控元件同時支援 value + onChange(受控)與 defaultValue(非受控),語義與原生 React 表單一致:
import { useState } from 'react'
import { LhInput } from '@lh-ui/react'
function Demo() {
const [value, setValue] = useState('')
return (
<>
{/* 受控 */}
<LhInput value={value} onChange={(val) => setValue(val)} />
{/* 非受控 */}
<LhInput defaultValue="默认值" />
</>
)
}
事件回呼是雙參數
所有表單元件的 onChange 都是 (value, event) 兩個參數:第一個是新值,第二個是原生事件。這與 lh-ui-plus 的 emit('change', [val, e]) 同構,方便從 Vue 遷移。
全域設定
用 LhConfigProvider 下發全域尺寸、語言與主題變數:
import { LhConfigProvider } from '@lh-ui/react'
export default function App() {
return (
<LhConfigProvider size="middle" locale="zh-CN">
<YourApp />
</LhConfigProvider>
)
}
未包裹 LhConfigProvider 時元件也不會報錯——消費側有全欄位 undefined 的兜底預設值。
命令式服務
message 等命令式服務透過惰性建立的單例容器掛載,首次呼叫才建立 React root:
import { message, notification, loading } from '@lh-ui/react'
import '@lh-ui/react/style/message'
message.success('保存成功')
notification.success({ title: '保存成功', content: '作品已发布到画廊。' })
loading.show({ text: '提交中…' })
三個服務的定位:message 是輕量頂部提示,notification 是帶標題 / 正文的四角通知,
loading 是全螢幕或局部的載入遮罩。詳見各自的元件文件。
與 lh-ui-plus 的關係
@lh-ui/react 與 @lh-ui/vue3(lh-ui-plus)同源同構:
- 元件邏輯完全相同,來自
@lh-ui/share/core,兩庫都不持有邏輯副本 - 樣式完全相同,來自
@lh-ui/share/styles,BEM 類別名一一對應 - props 同名同義,只做 React 慣用化改寫(
v-model→value/onChange等)
從 Vue 遷移請讀遷移指南。
伺服器端渲染(SSR)
元件對 SSR 安全:DOM 操作全部在 useEffect / useIsomorphicLayoutEffect 內執行,useLhLocale 用 useSyncExternalStore 提供 SSR 快照。命令式服務(message 等)在伺服器端呼叫時只打告警並 no-op。