入门
# useEffect
# return
useEffect 中的 return 语句中的函数会在组件卸载(销毁)时执行,用于清理副作用或取消订阅。这是 useEffect 的一个重要特性,用于确保在组件不再使用时清理资源,以防止内存泄漏和其他问题。
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
// 创建一个定时器
const timerId = setInterval(() => {
console.log('Timer running...');
}, 1000);
// 在组件卸载时清理定时器
return () => {
clearInterval(timerId);
};
}, []); // 空数组表示只在组件挂载和卸载时执行
return (
<div>
{/* 组件内容 */}
</div>
);
}
export default MyComponent;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 陷阱
1、陷阱一:以下代码会陷入死循环中
const [count, setCount] = useState(0);
useEffect(() => {
setCount(count + 1);
});
1
2
3
4
2
3
4
2、陷阱二:没有依赖数组作为第二个参数,与依赖数组位空数组 [] 的行为是不一致的:
useEffect(() => {
// 这里的代码会在每次渲染后执行
});
useEffect(() => {
// 这里的代码只会在组件挂载后执行
}, []);
useEffect(() => {
//这里的代码只会在每次渲染后,并且 a 或 b 的值与上次渲染不一致时执行
}, [a, b]);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
上次更新: 2024/07/21, 21:46:04