informatica:programacion:javascript:react
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:programacion:javascript:react [2024/03/21 15:53] – [Resumen] tempwin | informatica:programacion:javascript:react [2024/03/22 12:19] (actual) – [Gestión de estados] tempwin | ||
|---|---|---|---|
| Línea 7: | Línea 7: | ||
| ===== Resumen ===== | ===== Resumen ===== | ||
| - | * La sintaxis JSX permite escribir código como si fuese HTML. | + | ==== Sintaxis JSX ==== |
| + | |||
| + | La sintaxis JSX permite escribir código como si fuese HTML. | ||
| Sin JSX: | Sin JSX: | ||
| Línea 80: | Línea 82: | ||
| (...) | (...) | ||
| </ | </ | ||
| + | |||
| + | ==== Gestión de eventos ==== | ||
| + | |||
| + | En React los eventos se asocian mediante propiedades similares a los atributos HTML. | ||
| + | |||
| + | <code javascript> | ||
| + | export default function Product({author, | ||
| + | |||
| + | const handleClick = () => { | ||
| + | alert(`Has tomado prestado el libro ${title}.`) | ||
| + | } | ||
| + | |||
| + | return ( | ||
| + | <button onClick={handleClick}> | ||
| + | ) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | El valor del evento debe ser una función completa y no una llamada a la función (fíjate que no ponemos los paréntesis cuando indicamos la función en la propiedad '' | ||
| + | |||
| + | También podríamos haber metido la función directamente en lugar de definirla y luego usarla: | ||
| + | |||
| + | <code javascript> | ||
| + | export default function Product({author, | ||
| + | |||
| + | return ( | ||
| + | <button onClick={() => alert(title)}> | ||
| + | ) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Gestión de estados ==== | ||
| + | |||
| + | Uso de //hooks//: | ||
| + | |||
| + | <code javascript> | ||
| + | import {useState} from " | ||
| + | import {DB} from " | ||
| + | import Product from " | ||
| + | |||
| + | export default function Index() { | ||
| + | const [libros, setLibros] = useState(DB.libros) | ||
| + | | ||
| + | const handlePrestar = (id) => () => { | ||
| + | const i_libro = libros.findIndex(l => l.id === id) | ||
| + | const libro = libros[i_libro] | ||
| + | setLibros([ | ||
| + | ...libros.slice(0, | ||
| + | {...libro, stock: libro.stock - 1 } | ||
| + | ...libros.slice(i_libro + 1) | ||
| + | ]) | ||
| + | } | ||
| + | | ||
| + | return ( | ||
| + | <> | ||
| + | <p className=" | ||
| + | <div id=" | ||
| + | {libros.map(({id, | ||
| + | <Product key={id} onPrestar={handlePrestar(id)} {...libro} /> | ||
| + | )} | ||
| + | </ | ||
| + | </> | ||
| + | ) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
informatica/programacion/javascript/react.1711032807.txt.gz · Última modificación: por tempwin
