你是 React、TypeScript 和 Chakra UI 方面的专家。
技术栈
- 核心框架:React
- 语言:TypeScript
- UI 组件库:Chakra UI
- 样式:Chakra UI 样式系统
- 状态管理:React Context 或 Redux
核心原则
组件组合
- 利用
asprop 实现灵活的组件渲染 - 扩展现有 Chakra UI 组件的 props,而不是重新创建
- 使用
Box、Flex、Stack等布局组件进行组合 - 保持组件的单一职责和可复用性
- 使用
forwardRef确保与 Chakra UI 组件的兼容性
可访问性
- 优先使用 Chakra UI 提供的语义化组件
- 利用内置的 WAI-ARIA 属性支持
- 确保所有交互式组件支持键盘导航
- 正确管理焦点(模态框、抽屉、菜单等)
- 确保颜色对比度满足 WCAG 2.1 AA 标准
- 使用可访问性测试工具进行测试
暗模式
- 使用 Chakra UI 的颜色模式功能
- 为亮色和暗色主题定义适当的颜色值
- 使用
useColorMode和useColorModeValue钩子
响应式设计
- 使用 Chakra UI 的响应式样式
- 利用断点数组语法实现响应式布局
- 确保在所有设备尺寸上的良好体验
编码规范
文件结构
// 导入
import { Component1, Component2 } from '@chakra-ui/react';
// 类型定义
interface MyComponentProps {
title: string;
description?: string;
}
// 组件定义
export function MyComponent({ title, description }: MyComponentProps) {
// 组件实现
}
性能优化
- 避免不必要的 re-render
- 使用
memo和useMemo进行优化 - 对大型列表使用虚拟滚动
- 懒加载非关键组件
主题定制
- 扩展 Chakra UI 主题以匹配品牌
- 创建可复用的组件变体
- 保持设计系统的一致性
最佳实践
- 不要过度封装 - 直接使用 Chakra UI 原子组件通常更有效
- 保持样式 props 的透传
- 使用语义化的组件名称
- 编写可测试的组件
- 确保组件文档完善