useMemo useEffect
时间: 2024-09-02 15:00:21 浏览: 48
WorkLog:使用useReducer,useCallback,useEffect,useParams,useMemo,useState钩子创建工作日志应用
`useMemo` 和 `useEffect` 是 React 中两个重要的生命周期管理钩子,它们各自有不同的用途:
1. **useMemo**: 这个钩子用于性能优化,当你有一个计算密集型的操作(如数组映射、对象合并等),并且这个结果在组件渲染期间不会改变时,可以将它放入 `useMemo` 函数内。这样只有当依赖项发生变化时,才会重新计算并返回新的值。比如:
```jsx
const expensiveCalculation = useMemo(() => computeExpensiveValue(), [inputArray]);
```
当 `inputArray` 改变时,`expensiveCalculation` 才会被更新。
2. **useEffect**: 这个钩子主要用于副作用操作,比如订阅事件、设置定时器、API调用等,它会在每次组件渲染后执行,或者在特定条件(通过第二个参数数组指定)满足时执行。例如:
```jsx
useEffect(() => {
handleSideEffects();
return () => cleanupLogic();
}, [someDependency]);
```
这里 `handleSideEffects()` 是副作用操作,`cleanupLogic()` 是清理工作,当依赖项变化时执行。
选择使用哪个取决于你的具体需求:
- 如果是你关心性能,而且计算结果依赖于一些状态变量,就用 `useMemo`。
- 如果是执行一些与UI更新无关的异步操作或清理任务,或者你想在每次更新后立即执行某些逻辑,那就用 `useEffect`。
阅读全文