Wath's new in React 19
Actions
데이터 변경이 되면 응답에 따라 상태를 변경해야한다. 예를 들어, 유저가 이름을 변경했을 때 API 요청을 하고 응답을 핸들링한다. 과거에는 pending 상태, 에러, 업데이트, 순차적 요청을 관리했다.
useState로 에러 상태를 관리했다면:
// Before Actions
function UpdateName({}) {
const [name, setName] = useState('');
const [error, setError] = useState(null);
const [isPending, setIsPending] = useState(false);
const handleSubmit = async () => {
setIsPending(true);
const error = await updateName(name);
setIsPending(false);
if (error) {
setError(error);
return;
}
redirect('/path');
};
return (
<div>
<input value={name} onChange={(event) => setName(event.target.value)} />
<button onClick={handleSubmit} disabled={isPending}>
Update
</button>
{error && <p>{error}</p>}
</div>
);
}React 19에서는 트랜지션에서 비동기 함수를 사용하여 보류 상태, 오류, 양식 및 낙관적 업데이트를 자동으로 처리하는 기능이 추가된다.
비동기 전환을 사용하는 함수를 "Actions"라고 한다.
액션은 자동으로 데이터 제출을 관리한다.
Pending state: 액션은 요청이 시작될 때 시작되어 최종 상태 업데이트가 커밋되면 자동으로 재설정되는 보류상태를 제공한다.
Optimistic updates: 요청이 제출되는 동안 사용자에게 즉각적인 피드백을 표시할 수 있도록
useOptimistic을 지원한다.Error handling: 오류 처리 기능을 제공하므로 에러 바운더리를 표시하고 원래 값으로 되돌릴 수 있다.
Forms:
<form>요소는 action과 formAction 프로퍼티에 함수를 전달할 수 있다.
useActionState
액션의 일반적인 경우를 더 쉽게 처리할 수 있다.
래핑된 액션이 호출되면, useActionState는 액션의 마지막 결과를 데이터로 반환하고 액션의 보류 상태를 보류 중으로 반환한다.
useFormStatus
디자인시스템에서는 form에 대한 정보에 접근해야할 때, props를 전달하지 않고 접근할 수 있도록 작성하는 것이 일반적이다.
이 작업은 컨텍스트를 통해 수행할 수도 있지만, 일반적인 경우 더 쉽게 만들기 위해 useFormStatus를 추가함.
Context Provider처럼 부모 form 컴포넌트의 상태를 읽는다.
useOptimistic
데이터 변형을 수행할 때 비동기 요청이 진행되는 동안 상태를 표시하는 것이 일반적
updateName 요청이 진행되는 동안 optimiticName을 즉시 렌더링한다.
업데이트가 완료되거나 오류가 발생하면 currentName 값으로 전환한다.
use
early return 과 같이 조건부로 context를 읽을 때 use를 사용할 수 있다.
use는 hooks와 마찬가지로 렌더링될 때만 호출할 수 있다.
하지만 조건부로 호출할 수 있다는 점이 특징
Reference
Last updated