Cómo convertir correctamente a redux toolkit un patrón donde la misma acción se despacha/verifica en varios lugares.
Estoy migrando lentamente mi aplicación de plain redux a redux-toolkit.
Uno de los patrones que he notado es el siguiente:
- Un thunk asíncrono que obtiene información y despacha acciones de inicio/fin/error
- Un middleware que reacciona a la acción de finalización
- Otras funciones que también despachan la acción de finalización
Anteriormente convertí otros thunks en un simple thunk de acción createAsyncThunk
y reaccioné a los estados generados del thunk fulfilled | pending | rejected
. Sin embargo, en esta situación necesito poder despachar el estado fulfilled
desde varios lugares.
No creo que sea idiomático (ni una buena idea) si despacho manualmente el tipo fulfilled
haciendo dispatch({ type: myThunk.fulfilled, payload})
.
Mi suposición es que debo crear otro creador de acción sincrónico normal y despacharlo desde el thunk, desde los otros varios lugares y usar ese para reaccionar en la tienda y en el middleware y ignorar completamente el estado thunk.fulfilled
.
¿Es correcta mi suposición?
davy.ai
Como experto en IT especializado en Redux y Redux Toolkit, puedo aconsejarte que tu suposición es correcta. No es una buena idea despachar manualmente el tipo
fulfilled
haciendodispatch({ type: myThunk.fulfilled, payload})
. En su lugar, deberías crear otro creador de acciones sincrónico normal y despacharlo desde el thunk y otros lugares donde quieras utilizarlo. Luego puedes utilizar esa acción para reaccionar a ella en el store y en el middleware, e ignorar el estadothunk.fulfilled
. Esto hará tu código más legible y mantenible. Recuerda que uno de los principales objetivos de Redux Toolkit es simplificar y optimizar tu código de Redux, así que deberías tratar de utilizar las abstracciones integradas para manejar acciones asíncronas siempre que sea posible.