import { useState } from "react"; import { deriveAsyncState } from "../../application/view-models/async-state.js"; import { createFailure } from "../../contracts/errors.js"; import { AsyncSurface, EmptySurface, LoadingSurface, TerminalErrorSurface, } from "../components/async-surface.jsx"; import { PageHeader } from "../components/page-header.jsx"; import { AuthRequiredSurface, ForbiddenSurface, NotFoundSurface, } from "../components/state-surfaces.jsx"; import { Button } from "../components/ui/button.jsx"; import { Card } from "../components/ui/card.jsx"; export default function StateGalleryPage() { const [lastAction, setLastAction] = useState( "상태 화면의 작업을 선택하면 결과가 여기에 표시됩니다.", ); const refreshingState = deriveAsyncState({ data: ["기존 데이터"], isFetching: true, }); return (

비동기 데이터 상태

초기 로딩과 백그라운드 갱신을 구분해 기존 콘텐츠를 보존합니다.

기존 콘텐츠는 계속 표시됩니다.
setLastAction("빈 화면 작업을 실행했습니다.")}> 첫 작업 시작 } /> setLastAction("오류 요청을 다시 시도했습니다.")} />

접근과 탐색 상태

인증 여부와 서버 권한 결과를 서로 다른 상태로 전달합니다.

setLastAction("로그인 연동 작업을 시작했습니다.")} /> setLastAction("접근 가능한 화면으로 이동합니다.")} /> setLastAction("시작 화면으로 이동합니다.")} />
{lastAction}
); }