From 344331d63a75ab7ce6ee07e2849b194682460af0 Mon Sep 17 00:00:00 2001 From: Laure Retru-Chavastel Date: Sat, 22 Jul 2023 17:55:15 +0200 Subject: [PATCH 01/11] =?UTF-8?q?=F0=9F=93=9D=20First=20translation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/content/learn/updating-arrays-in-state.md | 333 +++++++++--------- 1 file changed, 166 insertions(+), 167 deletions(-) diff --git a/src/content/learn/updating-arrays-in-state.md b/src/content/learn/updating-arrays-in-state.md index 45c6b70dc..086b0b72d 100644 --- a/src/content/learn/updating-arrays-in-state.md +++ b/src/content/learn/updating-arrays-in-state.md @@ -1,52 +1,52 @@ --- -title: Updating Arrays in State +title: Mettre à jour les tableaux d'un état --- -Arrays are mutable in JavaScript, but you should treat them as immutable when you store them in state. Just like with objects, when you want to update an array stored in state, you need to create a new one (or make a copy of an existing one), and then set state to use the new array. +Les tableaux sont un autre type d’objet modifiable en JavaScript que vous pouvez stocker dans un état et que vous devez traiter comme étant en lecture seule. Tout comme avec les objets, lorsque vous souhaitez mettre à jour un tableau stocké dans un état, vous devez en créer un nouveau (ou en copier un existant), puis affecter le nouveau tableau dans l’état. -- How to add, remove, or change items in an array in React state -- How to update an object inside of an array -- How to make array copying less repetitive with Immer +- Comment ajouter, supprimer ou modifier des éléments dans un tableau dans l'état React +- Comment mettre à jour un objet à l'intérieur d'un tableau +- Comment rendre la copie de tableaux moins répétitive avec Immer -## Updating arrays without mutation {/*updating-arrays-without-mutation*/} +## Mettre à jour des tableaux sans mutation {/*updating-arrays-without-mutation*/} -In JavaScript, arrays are just another kind of object. [Like with objects](/learn/updating-objects-in-state), **you should treat arrays in React state as read-only.** This means that you shouldn't reassign items inside an array like `arr[0] = 'bird'`, and you also shouldn't use methods that mutate the array, such as `push()` and `pop()`. +En JavaScript, les tableaux sont simplement un autre type d'objet. [Tout comme avec les objets](/learn/updating-objects-in-state), **vous devez considérer les tableaux dans l'état React comme étant en lecture seule.** Cela signifie que vous ne devez pas réassigner les éléments à l'intérieur d'un tableau, comme `arr[0] = 'bird'`, et vous ne devez pas non plus utiliser des méthodes qui modifient le tableau, telles que `push()` et `pop()`. -Instead, every time you want to update an array, you'll want to pass a *new* array to your state setting function. To do that, you can create a new array from the original array in your state by calling its non-mutating methods like `filter()` and `map()`. Then you can set your state to the resulting new array. +Au lieu de ça, chaque fois que vous souhaitez mettre à jour un tableau, vous devez passer un *nouveau* tableau à la fonction de mise à jour de l'état. Pour cela, vous pouvez créer un nouveau tableau à partir de l'original en utilisant des méthodes non modifiantes telles que `filter()` et `map()`. Ensuite, vous pouvez mettre à jour l'état avec le nouveau tableau résultant. -Here is a reference table of common array operations. When dealing with arrays inside React state, you will need to avoid the methods in the left column, and instead prefer the methods in the right column: +Voici un tableau de référence des opérations courantes sur les tableaux. Lorsque vous traitez des tableaux dans l'état de React, vous devrez éviter les méthodes de la colonne de gauche et privilégier celles de la colonne de droite : -| | avoid (mutates the array) | prefer (returns a new array) | -| --------- | ----------------------------------- | ------------------------------------------------------------------- | -| adding | `push`, `unshift` | `concat`, `[...arr]` spread syntax ([example](#adding-to-an-array)) | -| removing | `pop`, `shift`, `splice` | `filter`, `slice` ([example](#removing-from-an-array)) | -| replacing | `splice`, `arr[i] = ...` assignment | `map` ([example](#replacing-items-in-an-array)) | -| sorting | `reverse`, `sort` | copy the array first ([example](#making-other-changes-to-an-array)) | +| | à éviter (modifie le tableau) | à privilégier (renvoie un nouveau tableau) | +| ------------ | ------------------------------------ | ------------------------------------------------------------------------- | +| ajout | `push`, `unshift` | `concat`, syntaxe de *spread* `[...arr]` ([exemple](#adding-to-an-array)) | +| suppression | `pop`, `shift`, `splice` | `filter`, `slice` ([exemple](#removing-from-an-array)) | +| remplacement | `splice`, affectation `arr[i] = ...` | `map` ([exemple](#replacing-items-in-an-array)) | +| tri | `reverse`, `sort` | copiez d'abord le tableau ([exemple](#making-other-changes-to-an-array)) | -Alternatively, you can [use Immer](#write-concise-update-logic-with-immer) which lets you use methods from both columns. +Vous pouvez également [utiliser Immer](#écrire-une-logique-de-mise-à-jour-concise-avec-immer) qui vous permet d'utiliser des méthodes des deux colonnes. -Unfortunately, [`slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) and [`splice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) are named similarly but are very different: +Malheureusement, [`slice`](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) et [`splice`](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) ont des noms similaires mais sont très différents : -* `slice` lets you copy an array or a part of it. -* `splice` **mutates** the array (to insert or delete items). +- `slice` vous permet de copier un tableau ou une partie de celui-ci. +- `splice` **modifie** le tableau (pour insérer ou supprimer des éléments). -In React, you will be using `slice` (no `p`!) a lot more often because you don't want to mutate objects or arrays in state. [Updating Objects](/learn/updating-objects-in-state) explains what mutation is and why it's not recommended for state. +En React, vous utiliserez beaucoup plus souvent `slice` (sans le `p` !) car vous ne voulez pas modifier les objets ou les tableaux dans l'état. [Mise à jour des objets](/learn/updating-objects-in-state) explique ce qu'est la mutation et pourquoi elle n'est pas recommandée pour l'état. -### Adding to an array {/*adding-to-an-array*/} +### Ajouter un élément à un tableau {/*adding-to-an-array*/} -`push()` will mutate an array, which you don't want: +`push()` va modifier un tableau, ce que vous ne souhaitez pas faire : @@ -61,7 +61,7 @@ export default function List() { return ( <> -

Inspiring sculptors:

+

Sculpteurs inspirants :

setName(e.target.value)} @@ -71,7 +71,7 @@ export default function List() { id: nextId++, name: name, }); - }}>Add + }}>Ajouter