useEffect中return函数的作用和执行时机解读
更新时间:2024年01月04日 09:01:33 作者:淘淘是只狗
这篇文章主要介绍了useEffect中return函数的作用和执行时机,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
useEffect中return函数作用和执行时机
官网的代码
import React, { useState, useEffect } from 'react';
function FriendStatus(props) {
const [isOnline, setIsOnline] = useState(null);
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
// Specify how to clean up after this effect:
return function cleanup() {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
if (isOnline === null) {
return 'Loading...';
}
return isOnline ? 'Online' : 'Offline';
}
这是effect可选的清除机制
每个 effect 都可以返回一个清除函数。

React会在组件卸载的时候执行清除操作
effect 在每次渲染的时候都会执行。
React 会在执行当前 effect 之前对上一个 effect 进行清除。
import { useEffect, useState } from 'react';
const Example = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("哈哈哈,useEffect 又执行了");
return () => {
console.log("看到我就知道执行了清除机制(~ ̄▽ ̄)~");
};
}, [count]);
return (
<div>
<p>那啥,你点了我 {count} 次 ⏲️⏲️⏲️⏲️</p>
{console.log("这是 dom 节点渲染了,小样╭(╯^╰)╮")}
<button
onClick={() => {
setCount(count + 1);
}}
>
你觉得你点击我之后会发生什么⛏️⛏️⛏️
</button>
</div>
);
};
function App() {
return (
<div className="App">
<Example />
</div>
);
}
export default App;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
如何使用 electron-forge 搭建 React + Ts&n
本文介绍了如何使用Electron、electron-forge、webpack、TypeScript、React和SCSS等技术搭建一个桌面应用程序,通过这篇文章,开发者可以创建一个包含React组件、SCSS样式、静态资源和Loading页面的应用,感兴趣的朋友一起看看吧2025-01-01


最新评论