Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

639
Visualizações
¿Por qué los objetos en Redux deberían ser inmutables?

¿Por qué los objetos en Redux deberían ser inmutables? Sé que algunos marcos como Angular2 usarán onPush y pueden aprovechar la inmutabilidad para comparar estados de vistas para una representación más rápida, pero me pregunto si hay otras razones, ya que Redux es independiente del marco y, sin embargo, menciona dentro de sus propios documentos para usar inmutabilidad (independientemente del marco).

Agradezco cualquier comentario.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Redux es una pequeña biblioteca que representa el estado como objetos (inmutables). Y nuevos estados al pasar el estado actual a través de funciones puras para crear estados de objeto/aplicación completamente nuevos.

Si tus ojos están vidriosos allí, no te preocupes. En resumen, Redux no representa cambios en el estado de su aplicación mediante la modificación de objetos (como lo haría con los paradigmas orientados a objetos). En cambio, los cambios de estado se representan como la diferencia entre el objeto de entrada y el objeto de salida ( var output = reducer(input) ). Si muta la input o la output , invalida el estado.

Para resumir de otra manera, la inmutabilidad es un requisito de Redux porque Redux representa el estado de su aplicación como "instantáneas de objetos congelados". Con estas instantáneas discretas , puede guardar su estado o revertir el estado y, en general, tener más "contabilidad" para todos los cambios de estado.

El estado de su aplicación solo cambia mediante una categoría de funciones puras llamadas reductores. Los reductores tienen 2 propiedades importantes:

  1. Nunca mutan , devolviendo objetos recién construidos: esto permite razonar sobre entrada + salida sin efectos secundarios
  2. Su firma es siempre function name(state, action) {} , por lo que facilita su composición:

Supongamos que el estado se ve así:

 var theState = { _2ndLevel: { count: 0 } }

Queremos incrementar el conteo, entonces hacemos estos reductores

 const INCR_2ND_LEVEL_COUNT = 'incr2NdLevelCount'; function _2ndlevel (state, action) { switch (action.type) { case INCR_2ND_LEVEL_COUNT: var newState = Objectd.assign({}, state); newState.count++ return newState; } } function topLevel (state, action) { switch (action.type) { case INCR_2ND_LEVEL_COUNT: return Object.assign( {}, {_2ndLevel: _2ndlevel(state._2ndlevel, action)} ); } }

Tenga en cuenta el uso de Object.assign({}, ...) para crear objetos completamente nuevos en cada reductor:

Suponiendo que hemos conectado Redux a estos reductores, entonces si usamos el sistema de eventos de Redux para activar un cambio de estado...

 dispatch({type: INCR_2ND_LEVEL_COUNT})

... Redux llamará:

 theNewState = topLevel(theState, action);

NOTA: action es de dispatch()

Ahora theNewState es un objeto completamente nuevo .

Nota: puede imponer la inmutabilidad con una biblioteca (o nuevas funciones de idioma ), o simplemente tener cuidado de no mutar nada: D

Para una mirada más profunda, le recomiendo que vea este video de Dan Abramov (el creador). Debe responder a cualquier pregunta persistente que tenga.

over 4 years ago · Santiago Trujillo Relatório

0

Los siguientes beneficios de la inmutabilidad se mencionan en la documentación de Redux :

  • Tanto Redux como React-Redux emplean verificación de igualdad superficial. En particular:
    • La utilidad combineReducers de Redux verifica superficialmente los cambios de referencia causados por los reductores a los que llama.
    • El método de conexión de React-Redux genera componentes que verifican superficialmente los cambios de referencia en el estado raíz y los valores de retorno de la función mapStateToProps para ver si los componentes envueltos realmente necesitan volver a renderizarse. Tal verificación superficial requiere inmutabilidad para funcionar correctamente.
  • La gestión de datos inmutable, en última instancia, hace que el manejo de datos sea más seguro.
  • La depuración de viajes en el tiempo requiere que los reductores sean funciones puras sin efectos secundarios, para que pueda saltar correctamente entre diferentes estados.
over 4 years ago · Santiago Trujillo Relatório

0

La razón principal por la que Redux usa la inmutabilidad es que no tiene que atravesar un árbol de objetos para verificar los cambios en cada valor clave. En cambio, solo verificará que la referencia del objeto haya cambiado o no para actualizar DOM en el cambio de estado.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda