react-puro-19
  • React Puro - 19
  • code
    • README
    • README
    • README
    • README
    • README
    • README
    • README
    • README
  • 7-state-en-clases
    • Ejemplo inicial: un contador
    • Manejo de eventos
    • El state
    • Sintaxis limpia en Class Components
    • setState es Asincrónico
    • Fusión superficial vs profunda
  • 5-children
    • Personalizar Children antes de renderizar
    • PropTypes para Children
    • Los Children
    • Diferentes tipos de Children
    • Manejando uso Children
  • 13-hook-usereducer
    • Qué es un Reducer?
    • Un ejemplo más practico
    • Entonces, Redux murió?
  • 4-proptypes
    • Documentación y depuración incluida
    • PropTypes como documentación
    • Cómo validar, formas comunes
    • Ejemplo Tweet con PropTypes
  • 3-props
    • Comunicación con componentes Padre
    • Las Props:
    • Pasar Props
    • Recibir Props
    • Ejemplo Tweet con Props
  • 11-pensando-uso-state
    • "Tipos" de componentes
    • Qué colocar en el State
    • Dónde mantener el estado
    • Pensando declarativamente
  • 9-requests-api
    • Intro
    • Eligir libreria HTTP
    • Obtener datos y mostrarlos
  • 10-state-en-funciones
    • El useState Hook
    • Actualizar State basado en State anterior
    • State como un Array
    • Reglas de los Hooks
    • La "magia" de los Hooks
    • State como un Objeto
    • Intro Hooks
  • 15-api-context
    • Usando React API Context
    • Patrón "Slots"
    • Patrón "Render Props"
    • Intro API Context
    • Otros Patrones de Context
    • Ejemplo perforación de props
    • hook_usecontext
  • 8-ciclo-vida-componente
    • Fases
    • El ciclo
    • Manejo de errores
    • Desmontaje
    • Representación
    • Montaje
  • 14-hook-useeffect
    • Límite cuando se ejecuta un Effect
    • Hacer cambios visibles del DOM
    • Obtener datos (Fetch) con useEffect
    • Intro useEffect
    • Re-obtener datos (Re-Fetch) cuando cambian
    • Solo ejecución en montaje y desmontaje
  • 2-jsx
    • Ejemplo componente Tweet:
    • JSX:
    • Trabajando con JSX:
  • 12-controles-entrada
    • Entradas controladas
    • Entradas no controladas
  • 6-github-file-list
    • Parte 2: la Prop 'key'
    • Parte inicial
  • 1-hola_mundo
    • Hola mundo:
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. 10-state-en-funciones

State como un Objeto

Dado que la función setter devuelta por useState sobrescribirá el estado cada vez que se llame, funciona de manera diferente al this.setState basado en Clase.

Recordar que this.setState fusionaría superficialmente el objeto que se pasó, en el estado existente, teniendo cuidado de no afectar las otras cosas de allí.

El setter useState, en cambio, afectará todo. Reemplaza todo el valor con lo que se ingrese. Aquí hay un ejemplo donde el estado es un objeto con un par de valores:

import React, { useState } from 'react';
import ReactDOM from 'react-dom';

const MultiCounter = () => {

    const [counts, setCounts] = useState({
    countA: 0,
    countB: 0
    });

    const incA = () => (
        setCounts(counts => ({
            ...counts,
            countA: counts.countA + 1
        }))
    );

    const incB = () => (
        setCounts(counts => ({
            ...counts,
            countB: counts.countB + 1
        }))
    );

    const badIncA = () => (
        setCounts({
            countA: counts.countA + 1
        })
    );

    return (
    <>
        <div> A: {counts.countA} </div>
        <div> B: {counts.countB} </div>
        <button onClick={incA} > Incrementar A </button>
        <button onClick={incB} > Incrementar B </button>
        <button onClick={badIncA} > Incrementar A mal </button>
    </>
);

}

ReactDOM.render(
    <MultiCounter /> ,
    document.querySelector('#root')
);

Reescribir este ejemplo y ver cómo funciona. Hacer clic en "Incrementar A" varias veces y en "Incrementar B" varias veces. Luego intentar "Incrementar A mal".

La conclusión aquí es que si el estado es un valor complejo como un objeto o array, debe tenerse cuidado, al actualizarlo, para copiar todas las otras partes que no tiene intención de cambiar. El operador ... es de gran ayuda para hacer copias de arrays y objetos.

AnteriorLa "magia" de los HooksSiguienteIntro Hooks

Última actualización hace 5 años

¿Te fue útil?