Files
dukang/apps/mini-user/src/components/FloatingToastHost.tsx
T
jacy fc2e5b65de
CI / verify (pull_request) Has been cancelled
v3.5.3版本更新1
2026-08-20 18:54:15 +08:00

33 lines
926 B
TypeScript

import { useEffect, useRef, useState } from 'react';
import { CoverView, View } from '@tarojs/components';
import { registerFloatingToastListener } from '../lib/floating-toast';
const TOAST_MS = 2600;
export default function FloatingToastHost() {
const [text, setText] = useState('');
const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
useEffect(() => {
return registerFloatingToastListener((message) => {
if (timerRef.current) clearTimeout(timerRef.current);
setText(message);
timerRef.current = setTimeout(() => {
setText('');
timerRef.current = null;
}, TOAST_MS);
});
}, []);
useEffect(() => {
return () => {
if (timerRef.current) clearTimeout(timerRef.current);
};
}, []);
if (!text) return null;
const Box = process.env.TARO_ENV === 'weapp' ? CoverView : View;
return <Box className="mu-float-toast">{text}</Box>;
}