一、React是什么?为什么选择它?
React是Facebook推出的用于构建用户界面的JavaScript库,它通过组件化的方式让前端开发更加高效。相比原生JS的DOM操作,React提供了更高级的抽象。
- 一个用于构建用户界面的 JavaScript 库
- 声明式:React 采用声明式编程,声明式的视图层,注重于描述界面的状态和数据的变化。
- 高效:React 通过对组件进行局部更新来实现高效的界面渲染。 更新 state 数据-->触发 render 函数-->更新虚拟 dom 元素-->diff 算法-->更新真实 dom 元素-->更新 UI 渲染
- 灵活:React 可以与其他库和框架一起使用,例如 Redux 用于管理应用状态,MobX 用于状态管理,以及 React Router 用于路由管理。
- 组件化:React 鼓励组件化开发,将用户界面划分为独立的、可重用的组件。
javascript
// 原生JS操作DOM
const oBody = document.querySelector('#friends tbody')
oBody.innerHTML = friends.map(friend => `
<tr>
<td>${friend.name}</td>
<td>${friend.hometown}</td>
</tr>
`).join('')
// React组件化开发
function App() {
return (
<table>
<tbody>
{friends.map(friend => (
<tr key={friend.name}>
<td>{friend.name}</td>
<td>{friend.hometown}</td>
</tr>
))}
</tbody>
</table>
)
}
二、React核心概念解析
1. 组件化开发
React应用由组件构成,每个组件都有自己的状态和生命周期:
jsx
function TodoList() {
const [todos, setTodos] = useState(['吃饭', '睡觉', '打豆豆'])
return (
<ul>
{todos.map(todo => <li key={todo}>{todo}</li>)}
</ul>
)
}
2. 响应式数据
使用useState
管理组件状态:
jsx
const [todos, setTodos] = useState(['脱单', '学习', '健身'])
// 更新状态
setTodos([...todos, '新任务'])
3. JSX语法
允许在JavaScript中写HTML,使代码更直观:
jsx
const element = <h1>Hello, {name}!</h1>
三、React项目工程化实践
1. 项目创建
现代React开发推荐使用Vite:
bash
npm init vite
# 选择React模板
cd 项目名
npm install
npm run dev
2. 目录结构
csharp
react-project/
├── src/
│ ├── App.jsx # 主组件
│ ├── main.jsx # 入口文件
│ └── index.css # 全局样式
├── public/ # 静态资源
├── package.json # 项目配置
└── vite.config.js # 构建配置
四、React业务开发实战
1. 数据渲染
jsx
function App() {
const [todos, setTodos] = useState(['吃饭','睡觉','打豆豆'])
return (
<table>
<tbody>
{todos.map((item,index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item}</td>
</tr>
))}
</tbody>
</table>
)
}
2. 状态管理进阶
jsx
function TodoApp() {
const [todos, setTodos] = useState([])
const [inputValue, setInputValue] = useState('')
const addTodo = () => {
setTodos([...todos, inputValue])
setInputValue('')
}
return (
<div>
<input
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<button onClick={addTodo}>添加</button>
<TodoList todos={todos} />
</div>
)
}
五、React开发最佳实践
- 组件拆分:保持组件小而专一
- 状态提升:共享状态提升到最近的共同父组件
- 性能优化:使用React.memo、useMemo等
- 代码规范:统一代码风格,使用ESLint
- 测试驱动:编写单元测试和集成测试
六、React生态圈
- 路由:React Router
- 状态管理:Redux/Zustand
- UI库:Ant Design/Material UI
- 构建工具:Vite/Webpack
- 服务端渲染:Next.js
七、学习资源推荐
这就是我的React业务开发经验分享!如果你也在学习React,欢迎在评论区交流心得~ 让我们一起进步!💪
PS:文中代码示例可以在我的GitHub找到,链接在个人主页~ 😊
标题 | |
---|---|