From ffedbcbf047194a28bca94811266d010b7a258ea Mon Sep 17 00:00:00 2001 From: Soichiro Miki Date: Sat, 11 May 2024 13:45:01 +0900 Subject: [PATCH] Translate "React 19 Beta" article --- src/content/blog/2024/04/25/react-19.md | 274 ++++++++++++------------ src/content/blog/index.md | 4 +- src/sidebarBlog.json | 4 +- 3 files changed, 141 insertions(+), 141 deletions(-) diff --git a/src/content/blog/2024/04/25/react-19.md b/src/content/blog/2024/04/25/react-19.md index 0670eaa80..ea7aa4da1 100644 --- a/src/content/blog/2024/04/25/react-19.md +++ b/src/content/blog/2024/04/25/react-19.md @@ -2,7 +2,7 @@ title: "React 19 Beta" author: The React Team date: 2024/04/25 -description: React 19 Beta is now available on npm! In this post, we'll give an overview of the new features in React 19, and how you can adopt them. +description: React 19 Beta が npm で利用可能になりました! この投稿では React 19 の新機能、およびそれらをどのように採用するかについて概説します。 --- April 25, 2024 by [The React Team](/community/team) @@ -11,33 +11,33 @@ April 25, 2024 by [The React Team](/community/team) -This beta release is for libraries to prepare for React 19. App developers should upgrade to 18.3.0 and wait for React 19 stable as we work with libraries and make changes based on feedback. +このベータリリースは、ライブラリが React 19 に備えるためのものです。アプリ開発者は、私たちがライブラリと協力してフィードバックに基づいた修正を行う間、18.3.0 にアップグレードしたうえで、React 19 の安定版をお待ちください。 -React 19 Beta is now available on npm! +npm で React 19 Beta が利用可能になりました! -In our [React 19 Beta Upgrade Guide](/blog/2024/04/25/react-19-upgrade-guide), we shared step-by-step instructions for upgrading your app to React 19 Beta. In this post, we'll give an overview of the new features in React 19, and how you can adopt them. +[React 19 Beta アップグレードガイド](/blog/2024/04/25/react-19-upgrade-guide)では、アプリを React 19 Beta にアップグレードするためのステップバイステップガイドをお示ししました。この投稿では、React 19 の新機能と、それらをどのように採用するかについて概説します。 -- [What's new in React 19](#whats-new-in-react-19) -- [Improvements in React 19](#improvements-in-react-19) -- [How to upgrade](#how-to-upgrade) +- [React 19 の新機能](#whats-new-in-react-19) +- [React 19 の改善点](#improvements-in-react-19) +- [アップグレード方法](#how-to-upgrade) -For a list of breaking changes, see the [Upgrade Guide](/blog/2024/04/25/react-19-upgrade-guide). +破壊的変更のリストについては、[アップグレードガイド](/blog/2024/04/25/react-19-upgrade-guide)を参照してください。 --- -## What's new in React 19 {/*whats-new-in-react-19*/} +## React 19 の新機能 {/*whats-new-in-react-19*/} -### Actions {/*actions*/} +### アクション (Action) {/*actions*/} -A common use case in React apps is to perform a data mutation and then update state in response. For example, when a user submits a form to change their name, you will make an API request, and then handle the response. In the past, you would need to handle pending states, errors, optimistic updates, and sequential requests manually. +React アプリの一般的なユースケースは、データの書き換えを行い、それに応じて state を更新するというものです。例えば、ユーザがフォームを送信してユーザ名を変更する場合、API リクエストを発行し、そのレスポンスを処理します。これまでは、送信中 (pending) 状態、エラー、楽観的更新やリクエストの順序について、手動で管理する必要がありました。 -For example, you could handle the pending and error state in `useState`: +例えば、送信中状態やエラーの処理は、以下のように `useState` を使って行っていました。 ```js // Before Actions @@ -69,9 +69,9 @@ function UpdateName({}) { } ``` -In React 19, we're adding support for using async functions in transitions to handle pending states, errors, forms, and optimistic updates automatically. +React 19 では、トランジション内で非同期関数を使用することで、送信中状態、エラー、フォーム、楽観的更新を自動的に処理するためのサポートが追加されます。 -For example, you can use `useTransition` to handle the pending state for you: +例えば、`useTransition` を使用すれば以下のように送信中状態を処理できます。 ```js // Using pending state from Actions @@ -103,24 +103,24 @@ function UpdateName({}) { } ``` -The async transition will immediately set the `isPending` state to true, make the async request(s), and switch `isPending` to false after any transitions. This allows you to keep the current UI responsive and interactive while the data is changing. +この非同期トランジションは、開始直後に `isPending` 状態を true にセットし、非同期リクエストを実行し、すべてのトランジション終了後に `isPending` を false に切り替えます。これにより、データが変更されている最中も、現在の UI をレスポンシブかつインタラクティブに保つことができます。 -#### By convention, functions that use async transitions are called "Actions". {/*by-convention-functions-that-use-async-transitions-are-called-actions*/} +#### 非同期トランジションを使用する関数を規約として「アクション」と呼ぶ {/*by-convention-functions-that-use-async-transitions-are-called-actions*/} -Actions automatically manage submitting data for you: +アクションはあなたの代わりに自動的にデータの送信を管理してくれます。 -- **Pending state**: Actions provide a pending state that starts at the beginning of a request and automatically resets when the final state update is committed. -- **Optimistic updates**: Actions support the new [`useOptimistic`](#new-feature-optimistic-updates) hook so you can show users instant feedback while the requests are submitting. -- **Error handling**: Actions provide error handling so you can display Error Boundaries when a request fails, and revert optimistic updates to their original value automatically. -- **Forms**: `
` elements now support passing functions to the `action` and `formAction` props. Passing functions to the `action` props use Actions by default and reset the form automatically after submission. +- **送信中状態**:アクションは送信中状態を提供します。これはリクエストと共に開始され、最終的な state の更新がコミットされると自動的にリセットされます。 +- **楽観的更新**:アクションは新しい [`useOptimistic`](#new-feature-optimistic-updates) フックをサポートしており、リクエスト送信中にユーザに対し即時のフィードバックを表示することができます。 +- **エラー処理**:アクションはエラー処理を提供するため、リクエストが失敗した場合にエラーバウンダリを表示し、楽観的更新を自動的に元の状態に復元できます。 +- **フォーム**:`` 要素は、props である `action` および `formAction` に関数を渡すことをサポートするようになりました。`action` に関数を渡すことでデフォルトでアクションとして扱われ、送信後にフォームを自動的にリセットします。 -Building on top of Actions, React 19 introduces [`useOptimistic`](#new-hook-optimistic-updates) to manage optimistic updates, and a new hook [`React.useActionState`](#new-hook-useactionstate) to handle common cases for Actions. In `react-dom` we're adding [`` Actions](#form-actions) to manage forms automatically and [`useFormStatus`](#new-hook-useformstatus) to support the common cases for Actions in forms. +アクションの仕組みを土台として、React 19 では楽観的更新を管理するための [`useOptimistic`](#new-hook-optimistic-updates) と、アクションの一般的なユースケースを扱うための新しいフックである [`React.useActionState`](#new-hook-useactionstate) が導入されます。`react-dom` では、フォームを自動的に管理する [`` アクション](#form-actions)と、フォームにおけるアクションの一般的なユースケースをサポートする [`useFormStatus`](#new-hook-useformstatus) が追加されています。 -In React 19, the above example can be simplified to: +React 19 では、上記の例は以下のように簡略化できます。 ```js // Using Actions and useActionState @@ -147,11 +147,11 @@ function ChangeName({ name, setName }) { } ``` -In the next section, we'll break down each of the new Action features in React 19. +以下のセクションで、React 19 の新しいアクション関連機能を詳しく説明していきます。 -### New hook: `useActionState` {/*new-hook-useactionstate*/} +### 新しいフック:`useActionState` {/*new-hook-useactionstate*/} -To make the common cases easier for Actions, we've added a new hook called `useActionState`: +アクションの一般的なユースケースを簡単に実現するため、`useActionState` という新しいフックを追加しました。 ```js const [error, submitAction, isPending] = useActionState( @@ -170,33 +170,33 @@ const [error, submitAction, isPending] = useActionState( ); ``` -`useActionState` accepts a function (the "Action"), and returns a wrapped Action to call. This works because Actions compose. When the wrapped Action is called, `useActionState` will return the last result of the Action as `data`, and the pending state of the Action as `pending`. +`useActionState` は関数(「アクション」本体)を受け取り、そのアクションをラップしたものを返します。これが動作するのはアクションのコンポジションが可能だからです。ラップされたアクションが呼び出されると、`useActionState` はアクションの最終結果を `data` として、アクションの進行中状態を `pending` として返します。 -`React.useActionState` was previously called `ReactDOM.useFormState` in the Canary releases, but we've renamed it and deprecated `useFormState`. +`React.useActionState` は以前の Canary リリースでは `ReactDOM.useFormState` と呼ばれていましたが、名前を変更し、`useFormState` を非推奨にしました。 -See [#28491](https://github.com/facebook/react/pull/28491) for more info. +詳細は [#28491](https://github.com/facebook/react/pull/28491) を参照してください。 -For more information, see the docs for [`useActionState`](/reference/react/useActionState). +詳細は、[`useActionState`](/reference/react/useActionState) のドキュメントをご覧ください。 -### React DOM: `` Actions {/*form-actions*/} +### React DOM:`` アクション {/*form-actions*/} -Actions are also integrated with React 19's new `` features for `react-dom`. We've added support for passing functions as the `action` and `formAction` props of ``, ``, and `