revert: requestAnimationFrame 代替 setInternal

dev/emitter
Lei OT 10 months ago
parent 11531598b0
commit ac172c633b

@ -88,43 +88,25 @@ function DesktopApp() {
* 标签页标题闪烁
*/
const [isTitleVisible, setIsTitleVisible] = useState(true)
const start = useRef();
const step = useCallback(() => {
document.title = isTitleVisible
? `🔔🔥💬【${totalNotify}条新消息】`
: '______________';
setIsTitleVisible(!isTitleVisible);
}, [isTitleVisible, totalNotify]);
useEffect(() => {
let animationFrameId;
const step = (timestamp) => {
if (start.current === undefined) {
start.current = timestamp;
}
const elapsed = timestamp - start.current;
if (elapsed > 1000) { // 2000ms = 2s
document.title = isTitleVisible
? `🔔🔥💬【${totalNotify}条新消息】`
: '______________';
setIsTitleVisible(!isTitleVisible);
start.current = timestamp;
}
if (totalNotify > 0) {
animationFrameId = requestAnimationFrame(step);
} else {
document.title = '销售平台';
}
};
let intervalId;
if (totalNotify > 0) {
if ('setAppBadge' in navigator) {
navigator.setAppBadge(totalNotify).catch(() => {});
}
animationFrameId = requestAnimationFrame(step);
intervalId = setInterval(step, 1000); // 1000ms = 1s
} else {
document.title = '销售平台';
}
return () => {
if (animationFrameId) {
cancelAnimationFrame(animationFrameId);
if (intervalId) {
clearInterval(intervalId);
}
};
}, [totalNotify, isTitleVisible]);

Loading…
Cancel
Save