PLANTA 6 · Sessió 6 · Activitat guiada PratLlibres
La biblioteca
Sistema a restaurar: Sala de proves (tot en verd)
- Alerta
- Manual
- Reptes
- Mòdul
Aquesta planta ja té llum. Pots tornar-la a jugar per repassar, però la puntuació desada no canviarà.
Manual de la planta
0 / 3Desbloqueja les 3 pàgines del manual per obrir els reptes. Llegeix-les bé: els reptes en pregunten els detalls.
Una aplicació que ja funciona, amb forats
PratLlibres és un catàleg de llibres (React 19 + TypeScript + Vite) amb un cercador, preferits amb globus a la capçalera i un formulari d'opinió. Té 10 TODO d'una a tres línies i 10 proves de Vitest que els comproven.
npm run deven una terminal, per veure l'aplicació.npm testen una altra, per executar les proves: cada prova diu quin TODO comprova.- Es treballa de vermell a verd: fer un TODO, passar les proves, el següent.
El que demanaven els TODO
| TODO | Concepte |
|---|---|
| 1 i 2 · Cataleg | useState del cercador i onChange del camp |
| 3 · Cataleg | Condició del filter: títol o autor |
| 4 · Cataleg | La key de cada element de la llista |
| 5 · App | Afegir o treure un preferit sense mutar |
| 6 · Capcalera | Globus amb el recompte: renderitzat condicional |
| 7 · Opinio | Fer el camp «Títol del llibre» controlat |
| 8 · Opinio | preventDefault, desar els errors i marcar l'enviament |
| 9 · Cataleg | Missatge de llista buida |
| 10 · App | useEffect + localStorage |
Dues eines per a tot el que queda
Renderitzat condicional. Per mostrar o amagar una part de la pantalla segons una condició:
{condicio && <Element />}: només si és certa.{condicio ? <A /> : <B />}: una cosa o l'altra.
Alternar un element d'una llista sense mutar-la. Si hi és, se'n fa una de nova sense ell amb filter; si no hi és, una de nova amb ell al final amb l'spread.
{preferits.length > 0 && <span className="globus">{preferits.length}</span>}
setPreferits(
preferits.includes(id)
? preferits.filter((x) => x !== id)
: [...preferits, id],
);| Fragment | Què fa |
|---|---|
preferits.length > 0 && … | El globus només es dibuixa si hi ha algun preferit. |
preferits.includes(id) | Cert si l'id ja és a la llista. |
preferits.filter((x) => x !== id) | Llista nova amb tots menys aquest id. |
[...preferits, id] | Llista nova amb tots els d'abans i l'id al final. |
Planta restaurada · Sala de proves (tot en verd)
Deu de deu en verd! La biblioteca torna a tenir llum i l'últim mòdul és teu.
- XP
- 0
- Bonus ratxa
- 0
- Errors
- 0
- Pistes
- 0
- Estrelles
- ☆☆☆
Anota la lletra i la seva posició: al terrat hauràs de compilar l'ordre de reinici.