使用useEffect时,有些可能需要清楚effect的副作用,即类似获取后台数据这样的功能只需要获取一次就可以了。官方文档是这样写的
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';
}
我通过将这段代码进行运行时,页面始终显示“Loading...”字样,经过仔细分析,发现将官方代码的最后两句去掉就可以了,即