Open chouung opened 6 months ago
React19 라... 저랑 동갑이네요 ㅎㅎ 친구야~
와 졸업 프로젝트로 react를 썼었는데 그새 많이 바뀌었군요... 흥미롭게 읽었슴다
React19 라... 저랑 동갑이네요 ㅎㅎ 친구야~
@snaag +10
와 졸업 프로젝트로 react를 썼었는데 그새 많이 바뀌었군요... 흥미롭게 읽었슴다
@mingnuj 19는 진짜 메이저 업데이트 느낌이에요 ㅋㅋㅋ 엄청 많이 바뀝니다 !!! 두근두근
React labs - React 컴파일러
React 컴파일러
앞으로의 행보가 기대되며 앞으로 몇 달 안에 더 많은 소식을 공유할 수 있을 것입니다.
Actions
React server component에서 DB 변형을 실행하고 양식을 구현할 수 있도록 서버 작업을 통해 클라이언트에서 서버로 데이터를 전송하는 솔루션을 모색하고 있다고 공유한 적이 있습니다. 서버 액션을 개발하는 동안 클라이언트 전용 애플리케이션에서도 데이터 처리를 지원하도록 이러한 API를 확장했습니다.
이 광범위한 기능 모음을 간단히 "action"이라고 부릅니다. 액션을 사용하면
<form/>
과 같은 DOM 요소에 함수를 전달할 수 있습니다.Action
함수는 동기 혹은 비동기로 작동할 수 있습니다.표준 JavaScript를 사용하여 클라이언트 측에서 정의하거나 use server지시문을 사용하여 서버에서 정의할 수 있습니다.
액션을 사용할 때 React는 데이터 제출의 라이프사이클을 관리하며, 양식 액션의 현재 상태와 응답에 액세스하기 위해 useFormStatus 및 useFormState와 같은 훅을 제공합니다.
기본적으로 액션은 트랜지션 내에서 제출되므로 액션이 처리되는 동안 현재 페이지는 인터랙션이 가능한 상태로 유지됩니다.
액션은 비동기 함수를 지원하므로 transitions에서
async/await
기능을 사용할 수 있습니다.이를 통해
fetch
같은 비동기 요청이 시작될 때 트랜지션의isPending
상태로 보류 중인 UI를 표시하고, 업데이트가 적용되는 동안 보류 중인 UI를 계속 표시할 수 있습니다.Action
과 함께 optimistic 상태 업데이트를 관리하기 위한 useOptimistic이라는 기능을 도입합니다.Action
은 서버에 제출이 성공적으로 이루어졌다고 가정합니다. 그리고 클라이언트의 데이터 상태를 서버에서 받은 데이터 값으로 최종 설정합니다. 다시 말해, 클라이언트는 서버의 응답을 기다리지 않고도 사용자에게 피드백을 제공하며, 이는 액션이 성공적으로 완료되었다는 낙관적인 가정입니다.async/await
를 사용하여 작동하므로 클라이언트에서fetch
를 사용하든 서버에서 서버 액션을 사용하든 동일하게 작동합니다.라이브러리 작성자는
useTransition을
사용하여 자체 컴포넌트에 사용자 정의action={fn}
프로퍼티를 구현할 수 있습니다.우리의 의도는 라이브러리가 컴포넌트 API를 설계할 때 Actions 패턴을 채택하여 React 개발자에게 일관된 경험을 제공하는 것입니다.
<Calendar onSelect={eventHandler}>
컴포넌트를 제공하는 경우,<Calendar selectAction={action}>
API도 노출하는 것을 고려하세요.처음에는 client와 server간에 데이터 전송을 위한 server action에 집중했지만, React의 철학은 모든 플랫폼과 환경에 걸쳐 동일한 프로그래밍 모델을 제공하는 것입니다. 가능한 클라이언트에서 기능을 도입하면 서버에서도 작동하도록 하고, 그 반대의 경우도 마찬가지입니다.
React 19에서 추가되는 기능들
use client
와use server
는 풀스택 React 프레임워크용으로 설계된 번들러 기능입니다.use client
는 번들러가<script>
태그를 생성하도록 지시합니다.use server는
번들러가 POST 엔드포인트를 생성하도록 지시합니다.preload
및preinit
과 같은 새로운 리소스 로드 API를 추가했습니다.<form/>
같은 요소에 액션을 추가하고,useFormStatus
로 상태에 액세스하고,useFormState
로 결과를 처리하고,useOptimistic
으로 UI를 낙관적으로 업데이트할 수 있습니다.