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

Made with Slides.com