CS2031:
Desarrollo Basado en Plataformas
Semana 09: React II
Contenido
- Hooks
- useState: "Recordando" data
- useEffect: "Recuperando" data
- Demo: Props, state & effect
useState
-
Permite añadirle una variable de estado a tus componentes
-
Sintaxis: useState(initialState)
- ¿Cómo identificamos un estado?
¿Cómo identificamos un estado?
-
Cambian su valor durante la ejecución de nuestra app
-
No se pueden reemplazar por props
- No son calculados con base en otros estados o props
¿Cómo se declaran?
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
return (
<button onClick={handleClick}>
You pressed me {count} times
</button>
);
}
¿Cómo se declaran?
import { useState } from 'react';
export default function Form() {
const [name, setName] = useState('Taylor');
const [age, setAge] = useState(42);
return (
<>
<input
value={name}
onChange={e => setName(e.target.value)}
/>
<button onClick={() => setAge(age + 1)}>
Increment age
</button>
<p>Hello, {name}. You are {age}.</p>
</>
);
}
useEffect
-
Permite sincronizar un componente con un sistema externo
- Sintaxis: useEffect(configuration, dependencies)
Consumiendo un API
Demo:
Props, useState & useEffect
import { useState, useEffect } from 'react';
import { createConnection } from './chat.js';
function ChatRoom({ roomId }) {
const [serverUrl, setServerUrl] = useState('https://localhost:1234');
useEffect(() => {
const connection = createConnection(serverUrl, roomId);
connection.connect();
return () => {
connection.disconnect();
};
}, [roomId, serverUrl]);
return (
<>
<label>
URL del servidor:{' '}
<input
value={serverUrl}
onChange={e => setServerUrl(e.target.value)}
/>
</label>
<h1>¡Bienvenido a la sala {roomId}!</h1>
</>
);
}
import { useState, useEffect } from 'react';
export default function App() {
const [roomId, setRoomId] = useState('general');
const [show, setShow] = useState(false);
return (
<>
<label>
Elija el sitio de chat:{' '}
<select
value={roomId}
onChange={e => setRoomId(e.target.value)}
>
<option value="general">general</option>
<option value="viaje">viaje</option>
<option value="música">música</option>
</select>
</label>
<button onClick={() => setShow(!show)}>
{show ? 'Cerrar chat' : 'Abrir chat'}
</button>
{show && <hr />}
{show && <ChatRoom roomId={roomId} />}
</>
);
}
References
- React: Official docs
https://react.dev
- Hook: useState
https://react.dev/reference/react/useState
- Hook: useEffect
https://react.dev/reference/react/useEffect
- Strict Mode
https://react.dev/reference/react/useState#my-initializer-or-updater-function-runs-twice
Desarrollo Basado en Plataformas - React II
By Jorge Rios
Desarrollo Basado en Plataformas - React II
- 106