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. 7-state-en-clases

Fusión superficial vs profunda

Cuando se llama a this.setState, ya sea que se llame con un objeto o en forma funcional, el resultado es que fusionará superficialmente las propiedades de su objeto con el estado actual. Así es como funciona esto.

Por ejemplo... Digamos que se comienza con un estado como este:

{
    score: 7,
    user: {
        name: "somebody",
        age: 26
    },
    products: [ /*...*/ ]
}

Después de ejecutar this.setState({score: 42}), el nuevo estado será:

{
    score: 42, // new!
    user: { // unchanged
    name: "somebody", // unchanged
    age: 26 // unchanged
    },
    products: [ /* unchanged */ ]
}

Es decir, combina el objeto que pasa a setState (o devuelve de la versión funcional) con el estado existente. No borra el estado existente, y no reemplaza todo el estado de nivel superior con su objeto.

Si, en su lugar, se ejecuta this.setState({user: {age: 4}}), reemplazaría todo el objeto user con el nuevo:

{
    score: 7, // unchanged
    user: { // new!
    age: 4 // no 'name'
    },
    products: [...], // unchanged
}

Una fusión "profunda" se muestra en el objeto de user y solo actualiza su propiedad de age, dejando el resto perdido. Una fusión "superficial" sobrescribe todo el objeto user con el nuevo pero no reemplazará el estado de nivel superior, y solo actualizará un nivel de profundidad.

AnteriorsetState es AsincrónicoSiguiente5-children

Última actualización hace 5 años

¿Te fue útil?