Submit 버튼이 form 제출 중인지 알아야. 부모에서 isPending 통과는 동작하지만 noise. useFormStatus 가 둘러싼 form 에서 직접 읽음.
모양
const { pending, data, method, action } = useFormStatus(). <form action={fn}> 안 에 렌더된 컴포넌트에서 hook 이 form 의 현재 제출 state 리포트. 가장 많이 쓰는 필드가 pending.
경계 규칙
useFormStatus 가 가장 가까운 둘러싼 form 읽음. 그 form 의 descendant 로 렌더된 컴포넌트에서만 동작. Sibling 이나 parent 에서 호출하면 기본값 (pending: false) 반환.
Composition 승리
useFormStatus 전엔 커스텀 <SubmitButton> 이 prop 필요: <SubmitButton isPending={isPending}>. useFormStatus 로 버튼이 status 자체 읽음. 부모가 <SubmitButton /> 렌더, 버튼이 어떤 form 안에 land 하든 동기 유지.
data 필드
Submit 이 in-flight 인 동안 data 가 제출된 FormData 포함. 제출 중인 것의 optimistic 프리뷰 보여주는 데 사용 가능 ('Saving title: My New Title...'). 자연스럽게 useOptimistic 와 짝 (다음 lesson).
Pending UI 를 pending 인 것과 co-locate. Submit 버튼이 자기 pending state 알고; input 이 자기 disabled state 앎. 중앙 isPending state 없음, prop-drilling 없음. 각 조각이 form context 에서 직접 읽음.