useEffect中return函數(shù)的作用和執(zhí)行時(shí)機(jī)解讀
useEffect中return函數(shù)作用和執(zhí)行時(shí)機(jī)
官網(wǎng)的代碼
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可選的清除機(jī)制
每個(gè) effect 都可以返回一個(gè)清除函數(shù)。

React會(huì)在組件卸載的時(shí)候執(zhí)行清除操作
effect 在每次渲染的時(shí)候都會(huì)執(zhí)行。
React 會(huì)在執(zhí)行當(dāng)前 effect 之前對(duì)上一個(gè) effect 進(jìn)行清除。
import { useEffect, useState } from 'react';
const Example = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("哈哈哈,useEffect 又執(zhí)行了");
return () => {
console.log("看到我就知道執(zhí)行了清除機(jī)制(~ ̄▽ ̄)~");
};
}, [count]);
return (
<div>
<p>那啥,你點(diǎn)了我 {count} 次 ????????</p>
{console.log("這是 dom 節(jié)點(diǎn)渲染了,小樣╭(╯^╰)╮")}
<button
onClick={() => {
setCount(count + 1);
}}
>
你覺得你點(diǎn)擊我之后會(huì)發(fā)生什么??????
</button>
</div>
);
};
function App() {
return (
<div className="App">
<Example />
</div>
);
}
export default App;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用 electron-forge 搭建 React + Ts&n
本文介紹了如何使用Electron、electron-forge、webpack、TypeScript、React和SCSS等技術(shù)搭建一個(gè)桌面應(yīng)用程序,通過這篇文章,開發(fā)者可以創(chuàng)建一個(gè)包含React組件、SCSS樣式、靜態(tài)資源和Loading頁面的應(yīng)用,感興趣的朋友一起看看吧2025-01-01
一文詳解ReactNative狀態(tài)管理rematch使用
這篇文章主要為大家介紹了ReactNative狀態(tài)管理rematch使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
React?useEffect異步操作常見問題小結(jié)
本文主要介紹了React?useEffect異步操作常見問題小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
react中通過props實(shí)現(xiàn)父子組件間通信的使用示例
在React中,父組件可以通過props屬性向子組件傳遞數(shù)據(jù),子組件可以通過props屬性接收父組件傳遞過來的數(shù)據(jù),本文就來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2023-10-10
react?實(shí)現(xiàn)表格列表拖拽排序的示例
本文主要介紹了react?實(shí)現(xiàn)表格列表拖拽排序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
如何使用React的VideoPlayer構(gòu)建視頻播放器
本文介紹了如何使用React構(gòu)建一個(gè)基礎(chǔ)的視頻播放器組件,并探討了常見問題和易錯(cuò)點(diǎn),通過組件化思想和合理管理狀態(tài),可以實(shí)現(xiàn)功能豐富且性能優(yōu)化的視頻播放器2025-01-01

