diff --git a/src/content/reference/react-dom/components/form.md b/src/content/reference/react-dom/components/form.md
index 7c6023220..d4cb1c9db 100644
--- a/src/content/reference/react-dom/components/form.md
+++ b/src/content/reference/react-dom/components/form.md
@@ -5,19 +5,18 @@ canary: true
-React's extensions to `
-
-The [built-in browser `
```
@@ -27,38 +26,38 @@ The [built-in browser `
```
-[See more examples below.](#usage)
+[Voir d'autres exemples plus bas](#usage).
#### Props {/*props*/}
-`
}
+ fallback={
Une erreur est survenue lors de l’envoi du formulaire
}
>
-
+
);
@@ -318,15 +320,15 @@ export default function Search() {
-### Display a form submission error without JavaScript {/*display-a-form-submission-error-without-javascript*/}
+### Afficher une erreur d'envoi de formulaire sans JavaScript {/*display-a-form-submission-error-without-javascript*/}
-Displaying a form submission error message before the JavaScript bundle loads for progressive enhancement requires that:
+Afin d'afficher un message d'erreur d'envoi de formulaire avant même que le *bundle* JavaScript soit chargé et exécuté (à des fins d'amélioration progressive), plusieurs choses sont nécessaires :
-1. `
` be rendered by a [Server Component](/reference/react/use-client)
-1. the function passed to the `
`'s `action` prop be a [Server Action](/reference/react/use-server)
-1. the `useFormState` Hook be used to display the error message
+1. le `
` doit figurer dans un [composant côté serveur](/reference/react/use-client)
+2. la fonction passée à la prop `action` du `
` doit être une [action serveur](/reference/react/use-server)
+3. le Hook `useFormState` doit être utilisé pour produire le message d'erreur
-`useFormState` takes two parameters: a [Server Action](/reference/react/use-server) and an initial state. `useFormState` returns two values, a state variable and an action. The action returned by `useFormState` should be passed to the `action` prop of the form. The state variable returned by `useFormState` can be used to displayed an error message. The value returned by the [Server Action](/reference/react/use-server) passed to `useFormState` will be used to update the state variable.
+`useFormState` accepte deux arguments : une [action serveur](/reference/react/use-server) et un état initial. `useFormState` renvoie deux valeurs : une variable d'état et une action. L'action ainsi renvoyée par `useFormState` doit être passée à la prop `action` du formulaire. La variable d'état renvoyée par `useFormState` peut être utilisée pour afficher le message d'erreur. La valeur renvoyée par [l'action serveur](/reference/react/use-server) passée à `useFormState` sera utilisée pour mettre à jour la variable d'état.
@@ -340,7 +342,7 @@ export default function Page() {
const email = formData.get("email");
try {
await signUpNewUser(email);
- alert(`Added "${email}"`);
+ alert(`Inscription de « ${email} » confirmée`);
} catch (err) {
return err.toString();
}
@@ -348,12 +350,12 @@ export default function Page() {
const [message, formAction] = useFormState(signup, null);
return (
<>
-
Signup for my newsletter
-
Signup with the same email twice to see an error
+
Inscris-toi à ma newsletter
+
L’utilisation d’un e-mail déjà inscrit produira une erreur
-
-
-
+
+
+
{!!message &&
{message}
}
>
@@ -366,7 +368,7 @@ let emails = [];
export async function signUpNewUser(newEmail) {
if (emails.includes(newEmail)) {
- throw new Error("This email address has already been added");
+ throw new Error("Cette adresse e-mail est déjà inscrite");
}
emails.push(newEmail);
}
@@ -386,13 +388,13 @@ export async function signUpNewUser(newEmail) {
-Learn more about updating state from a form action with the [`useFormState`](/reference/react-dom/hooks/useFormState) docs
+Apprenez-en avantage sur la mise à jour de l'état depuis une action de formulaire dans la [documentation de référence du Hook `useFormState`](/reference/react-dom/hooks/useFormState).
-### Handling multiple submission types {/*handling-multiple-submission-types*/}
+### Gérer plusieurs types d'envois {/*handling-multiple-submission-types*/}
-Forms can be designed to handle multiple submission actions based on the button pressed by the user. Each button inside a form can be associated with a distinct action or behavior by setting the `formAction` prop.
+Il est possible de concevoir un formulaire pour qu'il gère plusieurs actions d'envoi selon le bouton pressé par l'utilisateur. Chaque bouton au sein du formulaire peut être associé à une action ou un comportement distincts au moyen de sa prop `formAction`.
-When a user taps a specific button, the form is submitted, and a corresponding action, defined by that button's attributes and action, is executed. For instance, a form might submit an article for review by default but have a separate button with `formAction` set to save the article as a draft.
+Lorsque l'utilisateur active un bouton précis, le formulaire est envoyé, et l'action correspondante (définie par les attributs et l'action du bouton) est exécutée. Un formulaire pourrait par exemple publier un article par défaut, mais disposer par ailleurs d'un bouton distinct avec sa propre `formAction` pour simplement le stocker comme brouillon.
@@ -401,20 +403,20 @@ export default function Search() {
function publish(formData) {
const content = formData.get("content");
const button = formData.get("button");
- alert(`'${content}' was published with the '${button}' button`);
+ alert(`« ${content} » vient d’être publié avec le bouton « ${button} »`);
}
function save(formData) {
const content = formData.get("content");
- alert(`Your draft of '${content}' has been saved!`);
+ alert(`Votre brouillon de « ${content} » est sauvegardé !`);
}
return (
-
-
+
+
);
}
diff --git a/src/content/reference/react-dom/components/input.md b/src/content/reference/react-dom/components/input.md
index d3af0ef13..46a3d25a9 100644
--- a/src/content/reference/react-dom/components/input.md
+++ b/src/content/reference/react-dom/components/input.md
@@ -38,7 +38,7 @@ Les extensions de React à la prop `formAction` ne sont actuellement disponibles
-[`formAction`](https://developer.mozilla.org/fr/docs/Web/HTML/Element/input#formaction) : une chaîne de caractères ou une fonction. Cette prop a priorité sur le `
` pour les champs de `type="submit"` ou `type="image"`. Lorsqu'une URL est passée à `action`, le formulaire se comporte comme un formulaire HTML classique. Mais si une fonction est passée à `formAction`, la fonction traitera l'envoi du formulaire. Allez voir [`
`](/reference/react-dom/components/form#props).
+[`formAction`](https://developer.mozilla.org/fr/docs/Web/HTML/Element/input#formaction) : une chaîne de caractères ou une fonction. Cette prop a priorité sur le `
` pour les champs de `type="submit"` ou `type="image"`. Lorsqu'une URL est passée à `formAction`, le formulaire se comporte comme un formulaire HTML classique. Mais si une fonction est passée à `formAction`, la fonction traitera l'envoi du formulaire. Allez voir [`
`](/reference/react-dom/components/form#props).
Un champ de saisie peut devenir un [champ contrôlé](#controlling-an-input-with-a-state-variable) en lui passant une de ces props :
diff --git a/src/content/reference/react-dom/hooks/useFormState.md b/src/content/reference/react-dom/hooks/useFormState.md
index 53c73ae38..c8923f7cc 100644
--- a/src/content/reference/react-dom/hooks/useFormState.md
+++ b/src/content/reference/react-dom/hooks/useFormState.md
@@ -5,13 +5,13 @@ canary: true
-The `useFormState` Hook is currently only available in React's canary and experimental channels. Learn more about [release channels here](/community/versioning-policy#all-release-channels). In addition, you need to use a framework that supports [React Server Components](/reference/react/use-client) to get the full benefit of `useFormState`.
+Le Hook `useFormState` n'est actuellement disponible que sur les canaux de livraison Canary et Expérimental de React. Apprenez-en davantage sur [les canaux de livraison React](/community/versioning-policy#all-release-channels). Par ailleurs, vous aurez besoin d'utiliser un framework qui prenne en charge les [React Server Components](/reference/react/use-client) pour tirer pleinement parti de `useFormState`.
-`useFormState` is a Hook that allows you to update state based on the result of a form action.
+`useFormState` est un Hook qui vous permet de mettre à jour l'état sur base du résultat d'une action de formulaire.
```js
const [state, formAction] = useFormState(fn, initialState);
@@ -23,13 +23,13 @@ const [state, formAction] = useFormState(fn, initialState);
---
-## Reference {/*reference*/}
+## Référence {/*reference*/}
### `useFormState(action, initialState)` {/*useformstate*/}
{/* TODO T164397693: link to actions documentation once it exists */}
-Call `useFormState` at the top level of your component to create component state that is updated [when a form action is invoked](/reference/react-dom/components/form). You pass `useFormState` an existing form action function as well as an initial state, and it returns a new action that you use in your form, along with the latest form state. The latest form state is also passed to the function that you provided.
+Appelez `useFormState` au niveau racine de votre composant pour créer un état de composant qui sera mis à jour [lorsqu'une action de formulaire sera invoquée](/reference/react-dom/components/form). Vous passez à `useFormState` une fonction d'action de formulaire existante ainsi qu'un état initial, et il renvoie une nouvelle action que vous pouvez utiliser dans votre formulaire, ainsi que le dernier état en date pour ce formulaire. Cet état sera également passé à la fonction que vous avez fournie.
```js
import { useFormState } from "react-dom";
@@ -43,44 +43,44 @@ function StatefulForm({}) {
return (
{state}
-
+
)
}
```
-The form state is the value returned by the action when the form was last submitted. If the form has not yet been submitted, it is the initial state that you pass.
+L'état de formulaire est déterminé par la valeur renvoyée par l'action lors du dernier envoi en date du formulaire. Si le formulaire n'a pas encore été envoyé, il équivaut à l'état initial que vous avez fourni.
-If used with a server action, `useFormState` allows the server's response from submitting the form to be shown even before hydration has completed.
+Lorsque vous l'utilisez dans une action serveur, `useFormState` permet d'afficher la réponse du serveur pour l'envoi du formulaire avant même que l'hydratation ne soit terminée.
-[See more examples below.](#usage)
+[Voir d'autres exemples plus bas](#usage).
-#### Parameters {/*parameters*/}
+#### Paramètres {/*parameters*/}
-* `fn`: The function to be called when the form is submitted or button pressed. When the function is called, it will receive the previous state of the form (initially the `initialState` that you pass, subsequently its previous return value) as its initial argument, followed by the arguments that a form action normally receives.
-* `initialState`: The value you want the state to be initially. It can be any serializable value. This argument is ignored after the action is first invoked.
+* `fn` : la fonction à appeler lorsque le formulaire est envoyé. Lorsque la fonction est appelée, elle reçoit comme premier argument l'état précédent du formulaire (le `initialState` que vous avez fourni pour le premier appel, puis, pour les appels ultérieurs, la valeur précédemment renvoyée), suivi par les arguments normalement acceptés par une fonction d'action de formulaire.
+* `initialState` : la valeur initiale que vous souhaitez pour votre état. Il peut s'agir de n'importe quelle valeur sérialisable. Cet argument est ignoré après l'appel initial de l'action.
{/* TODO T164397693: link to serializable values docs once it exists */}
-#### Returns {/*returns*/}
+#### Valeur renvoyée {/*returns*/}
-`useFormState` returns an array with exactly two values:
+`useFormState` renvoie un tableau avec exactement deux valeurs :
-1. The current state. During the first render, it will match the `initialState` you have passed. After the action is invoked, it will match the value returned by the action.
-2. A new action that you can pass as the `action` prop to your `form` component or `formAction` prop to any `button` component within the form.
+1. L'état courant. Lors du rendu initial, il s'agira du `initialState` que vous avez passé. Après que l'action aura été invoquée, il correspondra à la valeur renvoyée par l'action.
+2. Une nouvelle action que vous pouvez passer comme prop `action` à votre composant `form`, ou comme prop `formAction` à tout composant `button` au sein du formulaire.
-#### Caveats {/*caveats*/}
+#### Limitations {/*caveats*/}
-* When used with a framework that supports React Server Components, `useFormState` lets you make forms interactive before JavaScript has executed on the client. When used without Server Components, it is equivalent to component local state.
-* The function passed to `useFormState` receives an extra argument, the previous or initial state, as its first argument. This makes its signature different than if it were used directly as a form action without using `useFormState`.
+* Lorsque vous utilisez un framework prenant en charge les React Server Components, `useFormState` vous permet de rendre les formulaires interactifs avant même que JavaScript ne soit exécuté côté client. Si vous l'utilisez hors des Server Components, il est équivalent à un état local de composant.
+* La fonction passée à `useFormState` reçoit un premier argument supplémentaire : l'état précédent ou initial. Sa signature est donc différente de celles des fonctions d'action de formulaire utilisées directement par vos formulaires, sans recours à `useFormState`.
---
-## Usage {/*usage*/}
+## Utilisation {/*usage*/}
-### Using information returned by a form action {/*using-information-returned-by-a-form-action*/}
+### Utiliser les informations renvoyées par une action de formulaire {/*using-information-returned-by-a-form-action*/}
-Call `useFormState` at the top level of your component to access the return value of an action from the last time a form was submitted.
+Appelez `useFormState` au niveau racine de votre composant pour accéder à la valeur renvoyée par l'action lors du dernier envoi du formulaire.
```js [[1, 5, "state"], [2, 5, "formAction"], [3, 5, "action"], [4, 5, "null"], [2, 8, "formAction"]]
import { useFormState } from 'react-dom';
@@ -97,27 +97,27 @@ function MyComponent() {
}
```
-`useFormState` returns an array with exactly two items:
+`useFormState` renvoie un tableau avec exactement deux valeurs :
-1. The current state of the form, which is initially set to the initial state you provided, and after the form is submitted is set to the return value of the action you provided.
-2. A new action that you pass to `
` as its `action` prop.
+1. L'état courant du formulaire, qui sera au départ l'état initial que vous aurez fourni, puis une fois le formulaire envoyé, vaudra la valeur de retour de l'action que vous aurez passée.
+2. Une nouvelle action que vous pouvez passer comme prop `action` à votre `form`.
-When the form is submitted, the action function that you provided will be called. Its return value will become the new current state of the form.
+Lorsque le formulaire sera envoyé, la fonction d'action que vous aurez fournie sera appelée. Sa valeur de retour deviendra le nouvel état courant du formulaire.
-The action that you provide will also receive a new first argument, namely the current state of the form. The first time the form is submitted, this will be the initial state you provided, while with subsequent submissions, it will be the return value from the last time the action was called. The rest of the arguments are the same as if `useFormState` had not been used
+L'action que vous aurez fournie recevra par ailleurs un premier argument supplémentaire, à savoir l'état courant du formulaire. Lors du premier envoi du formulaire, il s'agira de l'état initial que vous aurez fourni, alors que pour les envois ultérieurs, ce sera la valeur renvoyée par le dernier appel en date de l'action. Le reste des arguments est identique à une utilisation de l'action sans `useFormState`.
```js [[3, 1, "action"], [1, 1, "currentState"]]
function action(currentState, formData) {
// ...
- return 'next state';
+ return 'prochain état';
}
```
-
+
-#### Display form errors {/*display-form-errors*/}
+#### Afficher des erreurs de formulaire {/*display-form-errors*/}
-To display messages such as an error message or toast that's returned by a server action, wrap the action in a call to `useFormState`.
+Pour afficher des messages tels qu'un message d'erreur ou une notification renvoyés par une action serveur, enrobez l'action dans un appel à `useFormState`.
@@ -132,7 +132,7 @@ function AddToCartForm({itemID, itemTitle}) {
{itemTitle}
-
+
{message}
);
@@ -154,9 +154,9 @@ export default function App() {
export async function addToCart(prevState, queryData) {
const itemID = queryData.get('itemID');
if (itemID === "1") {
- return "Added to cart";
+ return "Ajouté au panier";
} else {
- return "Couldn't add to cart: the item is sold out.";
+ return "Impossible d’ajouter au panier : ce titre est épuisé.";
}
}
```
@@ -188,9 +188,9 @@ form button {
-#### Display structured information after submitting a form {/*display-structured-information-after-submitting-a-form*/}
+#### Afficher des données structurées suite à l'envoi d'un formulaire {/*display-structured-information-after-submitting-a-form*/}
-The return value from a server action can be any serializable value. For example, it could be an object that includes a boolean indicating whether the action was successful, an error message, or updated information.
+La valeur renvoyée par une action serveur peut être n'importe quelle valeur sérialisable. Il peut par exemple s'agir d'un objet avec un booléen indiquant si l'action a réussi, un message d'erreur, ou des informations mises à jour.
@@ -205,15 +205,15 @@ function AddToCartForm({itemID, itemTitle}) {
{itemTitle}
-
+
{formState?.success &&
- Added to cart! Your cart now has {formState.cartSize} items.
+ Ajouté ! Votre panier comporte désormais {formState.cartSize} éléments.
}
{formState?.success === false &&
- Failed to add to cart: {formState.message}
+ L’ajout a échoué : {formState.message}
}
@@ -243,7 +243,7 @@ export async function addToCart(prevState, queryData) {
} else {
return {
success: false,
- message: "The item is sold out.",
+ message: "Ce titre est épuisé.",
};
}
}
@@ -278,11 +278,11 @@ form button {
-## Troubleshooting {/*troubleshooting*/}
+## Dépannage {/*troubleshooting*/}
-### My action can no longer read the submitted form data {/*my-action-can-no-longer-read-the-submitted-form-data*/}
+### Mon action n'arrive plus à lire les données envoyées par le formulaire {/*my-action-can-no-longer-read-the-submitted-form-data*/}
-When you wrap an action with `useFormState`, it gets an extra argument *as its first argument*. The submitted form data is therefore its *second* argument instead of its first as it would usually be. The new first argument that gets added is the current state of the form.
+Lorsque vous enrobez une action avec `useFormState`, elle reçoit un *premier argument* supplémentaire. Les données envoyées par le formulaire sont donc présentes comme *second* argument, plutôt qu'en première position comme en temps normal. Le premier argument ainsi injecté contient l'état actuel du formulaire.
```js
function action(currentState, formData) {
diff --git a/src/content/reference/react/useOptimistic.md b/src/content/reference/react/useOptimistic.md
index d0511b1a9..455a3d194 100644
--- a/src/content/reference/react/useOptimistic.md
+++ b/src/content/reference/react/useOptimistic.md
@@ -5,13 +5,13 @@ canary: true
-The `useOptimistic` Hook is currently only available in React's canary and experimental channels. Learn more about [React's release channels here](/community/versioning-policy#all-release-channels).
+Le Hook `useOptimistic` n'est actuellement disponible que sur les canaux de livraison Canary et Expérimental de React. Apprenez-en davantage sur [les canaux de livraison React](/community/versioning-policy#all-release-channels).
-`useOptimistic` is a React Hook that lets you optimistically update the UI.
+`useOptimistic` est un Hook React qui vous permet de mettre à jour l'interface utilisateur (UI) de façon optimiste.
```js
const [optimisticState, addOptimistic] = useOptimistic(state, updateFn);
@@ -23,13 +23,13 @@ The `useOptimistic` Hook is currently only available in React's canary and exper
---
-## Reference {/*reference*/}
+## Référence {/*reference*/}
-### `useOptimistic(state, updateFn)` {/*use*/}
+### `useOptimistic(state, updateFn)` {/*useoptimistic*/}
-`useOptimistic` is a React hook that lets you show a different state while an async action is underway. It accepts some state as an argument and returns a copy of that state that can be different during the duration of an async action such as a network request. You provide a function that takes the current state and the input to the action, and returns the optimistic state to be used while the action is pending.
+`useOptimistic` est un Hook React qui vous permet d'afficher un état distinct pendant qu'une action asynchrone est en cours. Il accepte un argument d'état et renvoie une copie de cet état qui peut être différente pendant l'exécution de l'action asynchrone (par exemple une requête réseau). Vous fournissez une fonction qui accepte en arguments l'état courant et les données fournies à l'action, et renvoie l'état optimiste à utiliser pendant que l'action est en cours.
-This state is called the "optimistic" state because it is usually used to immediately present the user with the result of performing an action, even though the action actually takes time to complete.
+Cet état est qualifié « d'optimiste » parce qu'il est généralement utilisé pour immédiatement présenter à l'utilisateur le résultat de l'exécution de l'action, même si cette action met en réalité du temps à aboutir.
```js
import { useOptimistic } from 'react';
@@ -39,35 +39,34 @@ function AppContainer() {
state,
// updateFn
(currentState, optimisticValue) => {
- // merge and return new state
- // with optimistic value
+ // fusionne et renvoie l'état avec une valeur optimiste
}
);
}
```
-[See more examples below.](#usage)
+[Voir d'autres exemples plus bas](#usage).
-#### Parameters {/*parameters*/}
+#### Paramètres {/*parameters*/}
-* `state`: the value to be returned initially and whenever no action is pending.
-* `updateFn(currentState, optimisticValue)`: a function that takes the current state and the optimistic value passed to `addOptimistic` and returns the resulting optimistic state. It must be a pure function. `updateFn` takes in two parameters. The `currentState` and the `optimisticValue`. The return value will be the merged value of the `currentState` and `optimisticValue`.
+* `state` : la valeur à renvoyer initialement, ainsi que lorsqu'aucune action n'est en cours.
+* `updateFn(currentState, optimisticValue)` : une fonction qui accepte en arguments l'état courant et la valeur optimiste passée à `addOptimistic`, et renvoie l'état optimiste résultant. Il doit s'agir d'une fonction pure. `updateFn` accepte deux arguments : le `currentState` et la `optimisticValue`. La valeur renvoyée doit être le résultat d'une fusion métier de `currentState` et `optimisticValue`.
-#### Returns {/*returns*/}
+#### Valeur renvoyée {/*returns*/}
-* `optimisticState`: The resulting optimistic state. It is equal to `state` unless an action is pending, in which case it is equal to the value returned by `updateFn`.
-* `addOptimistic`: `addOptimistic` is the dispatching function to call when you have an optimistic update. It takes one argument, `optimisticValue`, of any type and will call the `updateFn` with `state` and `optimisticValue`.
+* `optimisticState` : l'état optimiste résultant. Il équivaut à `state`, à moins qu'une action soit en cours, auquel cas il est la valeur renvoyée par `updateFn`.
+* `addOptimistic` : `addOptimistic` est une fonction déclencheur que vous appelez lorsque vous avez une mise à jour optimiste à faire. Elle accepte un argument, `optimisticValue`, de quelque type que ce soit, et appellera `updateFn` avec `state` et `optimisticValue`.
---
-## Usage {/*usage*/}
+## Utilisation {/*usage*/}
-### Optimistically updating forms {/*optimistically-updating-with-forms*/}
+### Mise à jour optimiste de formulaires {/*optimistically-updating-with-forms*/}
-The `useOptimistic` Hook provides a way to optimistically update the user interface before a background operation, like a network request, completes. In the context of forms, this technique helps to make apps feel more responsive. When a user submits a form, instead of waiting for the server's response to reflect the changes, the interface is immediately updated with the expected outcome.
+Le Hook `useOptimistic` fournit un moyen de mettre à jour l'UI de façon optimiste le temps qu'une opération d'arrière-plan, telle qu'une requête réseau, aboutisse. Dans le contexte des formulaires, cette technique permet d'améliorer la fluidité perçue de l'appli. Lorsqu'un utilisateur envoie un formulaire, plutôt que d'attendre la réponse du serveur avant de refléter les changements, l'interface peut être mise à jour immédiatement avec le résultat prévu.
-For example, when a user types a message into the form and hits the "Send" button, the `useOptimistic` Hook allows the message to immediately appear in the list with a "Sending..." label, even before the message is actually sent to a server. This "optimistic" approach gives the impression of speed and responsiveness. The form then attempts to truly send the message in the background. Once the server confirms the message has been received, the "Sending..." label is removed.
+Lorsqu'un utilisateur saisit par exemple un message dans un formulaire puis clique sur le bouton « Envoyer », le Hook `useOptimistic` permet à ce message d'apparaître immédiatement dans la liste avec une étiquette « Envoi… », avant même que le message ne soit réellement envoyé au serveur. Cette approche « optimiste » donne une impression de vitesse et de réactivité. Le formulaire tente ensuite de réellement envoyer le message en arrière-plan. Une fois que le serveur en a confirmé réception, l'étiquette « Envoi… » est retirée.
@@ -99,12 +98,12 @@ function Thread({ messages, sendMessage }) {
{optimisticMessages.map((message, index) => (