⊗jsrtPmCoLSU 95 of 112 menu

Elevación de estado en React

A menudo, varios componentes deben reflejar los mismos datos cambiantes. En React se recomienda elevar el estado compartido al antecesor común más cercano. Veamos un ejemplo.

Supongamos que queremos hacer una calculadora de temperatura del agua. Consistirá en un input, en el que el usuario introducirá la temperatura, y un párrafo, en el que se mostrará el veredicto: agua líquida, agua sólida, agua gaseosa.

Supongamos que nuestra calculadora es un contenedor de componentes Calculator:

function Calculator() { return <div> </div>; }

Extraigamos el input para introducir la temperatura en el componente TempInp, y el párrafo con el veredicto - en el componente Verdict:

function Calculator() { return <div> <Verdict /> <TempInp /> </div>; }

Es fácil entender que tanto TempInp como Verdict deben tener un estado con la temperatura. Además, es lógico que esta debe ser la misma temperatura: a medida que se introducen datos en el input, debe mostrarse el veredicto.

En tal caso, se recomienda utilizar una técnica llamada elevación de estado: el estado, común para dos (o más) componentes, se eleva hacia arriba hasta su padre común.

En nuestro caso, resultará que el estado con la temperatura debe pertenecer al componente Calculator, que lo pasará a TempInp y Verdict como props:

function Calculator() { const [temp, setTemp] = useState(0); return <div> <Verdict temp={temp} /> <TempInp temp={temp} /> </div>; }

En el componente TempInp debe haber un input para cambiar la temperatura. Pero, como esta temperatura es un prop de este componente, no se puede cambiar directamente en TempInp. Lo correcto sería pasar desde el componente Calculator una función especial para cambiar la temperatura:

function Calculator() { const [temp, setTemp] = useState(0); function changeTemp(event) { setTemp(event.target.value); } return <div> <Verdict temp={temp} /> <TempInp temp={temp} changeTemp={changeTemp} /> </div>; }

Por cierto, se puede no introducir una nueva función, y pasar al componente hijo la función setTemp:

function Calculator() { const [temp, setTemp] = useState(0); return <div> <Verdict temp={temp} /> <TempInp temp={temp} setTemp={setTemp} /> </div>; }

Escriba la implementación de los componentes TempInp y Verdict.

Piense en 3 problemas en los que sea necesario utilizar la elevación de estado. Escriba las soluciones a estos problemas.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar