React 学习实践项目,记录从项目搭建到组件开发的全过程。
charity-finder/
├── src/
│ ├── fakadata.jsx
│ ├── contact/
│ │ └── contact.jsx
│ ├── result/
│ │ ├── card.jsx
│ │ └── result.jsx
│ ├── search/
│ │ └── search.jsx
│ └── top/
│ └── top.jsx
├── tsconfig.json
├── vite.config.js
└── README.md
# 创建Vite+React项目
pnpm create vite@latest charity-finder --template react
cd charity-finder
pnpm install# 安装依赖
pnpm add -w tailwindcss postcss autoprefixer
# 初始化配置
cd charity-finder
npx tailwindcss init -ptailwind.config.js 配置:
module.exports = {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}pnpm-workspace.yaml:
packages:
- 'packages/*'
- 'apps/*'
- 'charity-finder'package.json:
{
"name": "root-project",
"private": true,
"workspaces": [
"packages/*",
"apps/*",
"charity-finder"
],
"dependencies": {
"axios": "^1.6.0",
"lodash": "^4.17.21",
"react": "^19.1.0",
"react-dom": "^19.1.0"
}
}- 初始化Vite+React项目
- 配置Tailwind CSS基础样式
- 创建项目基础文件结构
- 安装核心依赖(axios/lodash)
- 实现Top组件布局
- 添加加载状态控制逻辑
- 开发Search搜索组件
- 构建Result结果展示组件
- 集成SVGR图标支持
注:根据您的学习计划,这是开始学习TypeScript的第一天!
- 将
.jsx文件重命名为.tsx以启用TypeScript支持 - 配置基本的
tsconfig.json文件 - 在组件中尝试添加类型定义
- 使用联合类型处理多种可能的输入
- 图片加载问题:使用类型断言处理
- 模块声明缺失:创建.d.ts声明文件
- 函数参数类型注解:添加明确类型定义
- 属性名一致性:严格匹配接口定义
- 创建contact组件
- 添加联系信息
- 添加社交媒体图标链接