Estoy aprendiendo React y Redux creando una aplicación que contiene una serie de datos basados en el tiempo: tiempo permitido y tiempo transcurrido.

[1] : {
  time: 10,
  elapsed: 0
},
[2] : {
  time: 15,
  elapsed: 0
},
[3] : {
  time: 20,
  elapsed: 0
}

Si alguno de los artículos supera el cronograma, quiero volver a calcular los tiempos para los artículos posteriores. P.ej. el elemento 1 tiene 10 segundos, pero si el elemento 1 tarda 12 segundos quiero recuperar ese tiempo de los elementos 2 y 3.

[1] : {
  time: 10,
  elapsed: 12
},
[2] : {
  time: 14,
  elapsed: 0
},
[3] : {
  time: 19,
  elapsed: 0
}

¿Dónde debo realizar este cálculo? Siento que el lugar más fácil para hacer esto sería el reductor, pero también creo que los reductores deberían ser lo más simples posible. ¿Es eso correcto?

Entonces, ¿deberían los cálculos ir en el creador de la acción, y luego pasar una nueva matriz de artículos a la tienda?

1
Kevin Robinson 17 sep. 2018 a las 10:39

3 respuestas

La mejor respuesta

OMI, esto debe hacerse en los reductores.

La acción no debe saber cuál será el efecto de la acción despachada, el reductor es el encargado de devolver el nuevo estado como efecto de la acción despachada.

1
Canastro 17 sep. 2018 a las 08:16

Citando del original Documentación de Redux.

No hay una respuesta única y clara para saber exactamente qué elementos lógicos deben ir en un reductor o un creador de acción. Algunos desarrolladores prefieren tener creadores de acciones "gordas", con reductores "delgados" que simplemente toman los datos en una acción y los fusionan ciegamente en el estado correspondiente. Otros intentan hacer hincapié en mantener las acciones lo más pequeñas posible y minimizar el uso de getState () en un creador de acciones. (Para los propósitos de esta pregunta, otros enfoques asíncronos como sagas y observables caen en la categoría "creador de acción").

Hay algunos beneficios potenciales de poner más lógica en sus reductores. Es probable que los tipos de acción sean más semánticos y más significativos (como "USER_UPDATED" en lugar de "SET_STATE"). Además, tener más lógica en los reductores significa que la depuración del viaje en el tiempo afectará más funcionalidad.

3
Satyaki 17 sep. 2018 a las 08:25

Puede utilizar middleware para tal fin.

-1
japesh singhal 17 sep. 2018 a las 08:11