import { useEffect, useState } from "react";
import { Button, ProgressBar } from "ooui-react";
function App() {
const [state, setState] = useState<"idle" | "starting" | "running" | "done">("idle");
const [progress, setProgress] = useState(0);
useEffect(() => {
if (state !== "running") {
return;
}
const timer = setInterval(() => {
setProgress((p) => {
if (p >= 100) {
setState("done");
return 100;
}
return p + 10;
});
}, 300);
return () => clearInterval(timer);
}, [state]);
return (
<div style={{ display: "flex", flexDirection: "column", gap: 12, maxWidth: 320 }}>
<ProgressBar
progress={state === "starting" || state === "idle" ? false : progress}
/>
<Button
disabled={state === "starting" || state === "running"}
onClick={() => {
setProgress(0);
setState("starting");
setTimeout(() => setState("running"), 800);
}}
>
开始任务
</Button>
</div>
);
}
export default App;