Retour aux articles

Actualité Remix : v2.3, Nouveaux hooks, flushSync & Vite 5.0

2 minutes de lecture28 vues
Remix v2.3

La version 2.3 de Remix vient de sortir. Et tu risques d'aimer son nouveau hook.

Présentation du hook useBlocker

useBlocker te permet de bloquer la navigation interne dans ton application Remix, conditionnellement. Marre d'avoir des utilisateurs qui ne remplissent pas entièrement le formulaire ? Avec ce hook, tu vas pouvoir afficher un composant s'ils essaient de quitter la page. Une fois la navigation bloquée, tu laisses le choix à tes visiteurs de confirmer leur action (quitter la page) ou annuler (rester sur la page).

L'exemple ci-dessous, présent dans la documentation de Remix nous explique comment utiliser ce hook.

formulaire.tsx
1
function ImportantForm() {
2
const [value, setValue] = React.useState("");
3
4
// Block navigating elsewhere when data has been entered into the input
5
const blocker = useBlocker(
6
({ currentLocation, nextLocation }) =>
7
value !== "" &&
8
currentLocation.pathname !== nextLocation.pathname
9
);
10
11
return (
12
<Form method="post">
13
<label>
14
Enter some important data:
15
<input
16
name="data"
17
value={value}
18
onChange={(e) => setValue(e.target.value)}
19
/>
20
</label>
21
<button type="submit">Save</button>
22
23
{blocker.state === "blocked" ? (
24
<div>
25
<p>Are you sure you want to leave?</p>
26
<button onClick={() => blocker.proceed()}>
27
Proceed
28
</button>
29
<button onClick={() => blocker.reset()}>
30
Cancel
31
</button>
32
</div>
33
) : null}
34
</Form>
35
);
36
}

Présentation du hook usePrompt (instable)

usePrompt (instable) te permet également de bloquer la navigation interne. Seule différence ? Il utilise la fenêtre native de confirmation de ton navigateur. (Tu n'as pas à créer un composant personnalisé)

formulaire.tsx
1
function ImportantForm() {
2
const [value, setValue] = React.useState("");
3
4
// Block navigating elsewhere when data has been entered into the input
5
unstable_usePrompt({
6
message: "Are you sure?",
7
when: ({ currentLocation, nextLocation }) =>
8
value !== "" &&
9
currentLocation.pathname !== nextLocation.pathname,
10
});
11
12
return (
13
<Form method="post">
14
<label>
15
Enter some important data:
16
<input
17
name="data"
18
value={value}
19
onChange={(e) => setValue(e.target.value)}
20
/>
21
</label>
22
<button type="submit">Save</button>
23
</Form>
24
);
25
}
26

Nouveau paramètre flushSync pour la soumission des formulaires

flushSync (instable) n'est pas un hook, mais il s'utilise de pair avec les hooks useSubmit() et useFetcher() pour soumettre les formulaires.

Cette fonctionnalité est similaire à la méthode flushSync de React (qui te permet de commit les changements d'état de manière synchrone)

La version v2.2 de Remix ajoutait le support instable du compilateur Vite. De son côté, Vite est passé en version 5.0, ce qui implique une optimisation des performances.

Articles similaires
Reste informé
Abonne-toi à notre newsletter pour recevoir les dernières mises à jour et insights.