Tengo curiosidad por algo. Siempre tuve la impresión de que uno podría tener dos acciones con el mismo nombre en dos reductores diferentes y que Redux resolvería la llamada correcta.
Entonces, por ejemplo, digamos que tenía esta configuración:
Y luego, en su archivo de componente React, cuando cargue el archivo de acciones correcto, simplemente sabrá a qué reductor llamar. Pero las pruebas revelan que este no es el caso.
¿Me estoy imaginando cosas? ¿Hay alguna manera de aislar y eliminar tales conflictos? ¿O hay que tener cuidado de nunca dar a dos reductores dispares el mismo nombre de acción?
Cada vez que se envía una acción, se llama a todos los reductores de rebanadas de Redux y se les da la oportunidad de actualizar su estado en respuesta a esa acción .
Los reductores normalmente inspeccionan la cadena action.type para decidir si deben manejar la acción, y eso normalmente se hace en función de una coincidencia de cadena exacta del tipo de acción:
// switch statements switch(action.type) { case 'todos/todoAdded': {} } // lookup tables const caseReducer = caseReducers[action.type]; if (caseReducer) {}Entonces, sí, si varios reductores buscan exactamente la misma cadena de tipo de acción, todos terminarán actualizando su estado en respuesta. Esto es intencional: animamos a varios reductores a manejar la misma acción .
Eso también significa que si desea distinguir entre varias acciones, debe otorgar a cada una de ellas una cadena de tipo única.
Es por eso que la función createSlice de Redux Toolkit acepta una cadena de name , para ayudar a que cada tipo de acción sea más único, de modo que 'sliceA/event' sea diferente de 'sliceB/event' .
(Tenga en cuenta que realmente debería usar Redux Toolkit para escribir toda su lógica Redux de todos modos).
Cuando envía una acción, diga getData , normalmente se asocia con un tipo, digamos, GET_DATA . Si nombra sus dos acciones de manera diferente pero con el mismo tipo, entonces el reductor se activará para todos aquellos casos en los que el nombre del tipo coincida. Por lo tanto, es mejor nombrar cuidadosamente sus acciones.
Por lo general, prefiero usar el patrón Ducks para configurar mi redux. Por lo tanto, prefijo todos los nombres de tipos de acción con el nombre de pato al que pertenece. Esto me ayuda a aislar las acciones.
Puede consultar lo siguiente para obtener más