Desarrollar un dashboard interactivo y visualmente intuitivo utilizando tecnologías web modernas, como React, que permita a los usuarios monitorear en tiempo real métricas clave del clima.
Revise la explicación en React Hooks – Tutorial.
Fuente: React Hooks – Tutorial
En src/components/ControlWeather.tsx:
{/* Interfaz SelectChangeEvent */}
import Select, { SelectChangeEvent } from '@mui/material/Select';
export default function ControlWeather() {
...
{/* Manejador de eventos */}
const handleChange = (event: SelectChangeEvent) => {
let idx = parseInt(event.target.value)
alert( idx );
};
{/* JSX */}
...
}
{/* JSX */}
return (
...
<Select
labelId="simple-select-label"
id="simple-select"
label="Variables"
defaultValue='-1'
onChange={handleChange}
>
...
)
}
(STOP 1) Compruebe el resultado en el navegador.
En src/components/ControlWeather.tsx:
{/* Hooks */ }
import { useState } from 'react';
{/* Componentes MUI */ }
...
variable de estado
selected y la función de actualización
setSelected. El valor predeterminado de la variable de estado es -1.
export default function ControlWeather() {
{/* Variable de estado y función de actualización */}
let [selected, setSelected] = useState(-1)
...
}
export default function ControlWeather() {
...
{/* Manejador de eventos */}
const handleChange = (event: SelectChangeEvent) => {
let idx = parseInt(event.target.value)
// alert( idx );
setSelected( idx );
};
...
}
export default function ControlWeather() {
...
{/* JSX */}
return (
<Paper>
<Typography ... > ... </Typography>
<Box ... > ... </Box>
{/* Use la variable de estado para renderizar del item seleccionado */}
<Typography mt={2} component="p" color="text.secondary">
{
(selected >= 0)?items[selected]["description"]:""
}
</Typography>
</Paper>
)
}
(STOP 2) Compruebe el resultado en el navegador.
En src/components/ControlWeather.tsx:
{/* Hooks */ }
import { useState, useRef } from 'react';
export default function ControlWeather() {
{/* Constante de referencia a un elemento HTML */ }
const descriptionRef = useRef<HTMLDivElement>(null);
...
export default function ControlWeather() {
...
{/* Manejador de eventos */}
const handleChange = (event: SelectChangeEvent) => {
let idx = parseInt(event.target.value)
// alert( idx );
setSelected( idx );
{/* Modificación de la referencia descriptionRef */}
if (descriptionRef.current !== null) {
descriptionRef.current.innerHTML = (idx >= 0) ? items[idx]["description"] : ""
}
};
...
}
export default function ControlWeather() {
{/* JSX */}
return (
<Paper>
...
<Box ... > ... </Box>
{/* Use la variable de estado para renderizar del item seleccionado */}
{/*<Typography mt={2} component="p" color="text.secondary">
{
(selected >= 0)?items[selected]["description"]:""
}
</Typography>*/}
<Typography ref={descriptionRef} mt={2} component="p" color="text.secondary" />
</Paper>
)
}
hooks
en React⚛️ Massive React hooks cheatsheet ↓
— George Moller (@_georgemoller) January 19, 2024
1/8 pic.twitter.com/S0BPD9OHrf
hooks, variable de estado, función de actualización