如何实现react组件开发
React 组件开发的核心方法
函数组件与 Hooks 结合
函数组件是 React 推荐的现代写法,配合 Hooks 可管理状态和副作用。使用 useState 管理局部状态,useEffect 处理生命周期逻辑,useContext 实现跨组件数据传递。
import React, { useState, useEffect } from 'react';
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `Count: ${count}`;
}, [count]);
return (
<button onClick={() => setCount(count + 1)}>
Clicked {count} times
</button>
);
}
类组件(传统写法)
类组件适用于复杂生命周期控制,需继承 React.Component 并实现 render() 方法。通过 this.state 管理状态,componentDidMount 等生命周期方法处理副作用。
class Timer extends React.Component {
constructor(props) {
super(props);
this.state = { seconds: 0 };
}
componentDidMount() {
this.interval = setInterval(() => {
this.setState({ seconds: this.state.seconds + 1 });
}, 1000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
render() {
return <div>Seconds: {this.state.seconds}</div>;
}
}
组件设计原则
单一职责原则 每个组件应只负责一个明确的功能模块。例如将表单输入、按钮和显示区域拆分为独立组件,通过 props 传递数据和回调函数。

可复用性设计 通过提取通用逻辑到自定义 Hooks 或高阶组件(HOC)。例如封装数据获取逻辑:
function useFetch(url) {
const [data, setData] = useState(null);
useEffect(() => {
fetch(url)
.then(res => res.json())
.then(setData);
}, [url]);
return data;
}
性能优化技巧
React.memo 与 useMemo
对函数组件使用 React.memo 避免不必要的渲染,对复杂计算使用 useMemo 缓存结果:

const ExpensiveComponent = React.memo(({ value }) => {
const computedValue = useMemo(() => computeExpensiveValue(value), [value]);
return <div>{computedValue}</div>;
});
代码分割与懒加载
使用 React.lazy 和 Suspense 实现按需加载:
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
return (
<React.Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</React.Suspense>
);
}
状态管理方案
Context API 轻量方案
对跨层级组件共享数据,使用 createContext 配合 useContext:
const ThemeContext = React.createContext('light');
function App() {
return (
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
);
}
function Toolbar() {
const theme = useContext(ThemeContext);
return <div>Current theme: {theme}</div>;
}
Redux 全局状态
复杂应用可使用 Redux 管理全局状态,搭配 @reduxjs/toolkit 简化流程:
import { configureStore, createSlice } from '@reduxjs/toolkit';
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
increment(state) {
state.value += 1;
}
}
});
const store = configureStore({ reducer: counterSlice.reducer });






