En el ejemplo descrito como parte del documento API de "combineReducers", en el momento de la creación de la tienda, "reducer" como parámetro se pasa a createStore en el archivo " app.js " ( let store = createStore(reducer)
).
Sin embargo, en " reducers / index.js ", el nombre de la función es "combineReducers" y no "reducer" ( export default combineReducers({..})
).
Entonces, ¿no debería el parámetro transmitido en la creación de la tienda ser "combineReducers" (Ej .: let store = createStore(combineReducers
))?
Yo diría que no. Si lo piensas bien, Redux solo tiene una función reductora. El hecho de que este ejemplo use combineReducers
para crear esa función es un detalle de implementación. En lo que respecta a app.js
, no sabe ni le importa qué está pasando dentro de esa función, cómo la creamos o qué está haciendo.
Además, tenga en cuenta que cuando reducers/index.js
hace export default combineReducers({})
, en realidad no está _creando_ una cosa llamada "combineReducers". Dice "tome el resultado de esta llamada a la función, sea lo que sea, y conviértalo en la exportación predeterminada". De hecho, técnicamente, esa salida ni siquiera tiene un nombre de variable real asociado.
Finalmente, tenga en cuenta que cuando hace export default
, cualquier archivo que importe esa exportación predeterminada puede darle el nombre que desee a la variable local, al igual que la definición de una función puede nombrar un parámetro de forma diferente a cualquier nombre de variable que se haya utilizado en el sitio de la llamada. Ejemplos:
function someFunction(a, fred, randomVariableName) {}
const firstVariable = 1;
const theMeaningOfLife = 42;
const aTotallyUselessName = "Whatever";
someFunction(firstVariable, theMeaningOfLife, aTotallyUselessName);
Tenga en cuenta que los nombres de las variables que defino fuera de la función no tienen que tener ninguna correspondencia con los nombres de los parámetros dentro de la función.
Del mismo modo, al exportar:
// fileA.js
export default const aThing = 42;
// fileB.js
import iCanGiveThisAnyNameIWant from "fileA";
@markerikson Gracias por estas excelentes respuestas.
Muchas gracias @markerikson.
Estoy aprendiendo a utilizar Redux con JQuery, menos el conocimiento de React. Su respuesta ahora me ayuda a comprender mejor los ejemplos con el código React.
Comentario más útil
Yo diría que no. Si lo piensas bien, Redux solo tiene una función reductora. El hecho de que este ejemplo use
combineReducers
para crear esa función es un detalle de implementación. En lo que respecta aapp.js
, no sabe ni le importa qué está pasando dentro de esa función, cómo la creamos o qué está haciendo.Además, tenga en cuenta que cuando
reducers/index.js
haceexport default combineReducers({})
, en realidad no está _creando_ una cosa llamada "combineReducers". Dice "tome el resultado de esta llamada a la función, sea lo que sea, y conviértalo en la exportación predeterminada". De hecho, técnicamente, esa salida ni siquiera tiene un nombre de variable real asociado.Finalmente, tenga en cuenta que cuando hace
export default
, cualquier archivo que importe esa exportación predeterminada puede darle el nombre que desee a la variable local, al igual que la definición de una función puede nombrar un parámetro de forma diferente a cualquier nombre de variable que se haya utilizado en el sitio de la llamada. Ejemplos:Tenga en cuenta que los nombres de las variables que defino fuera de la función no tienen que tener ninguna correspondencia con los nombres de los parámetros dentro de la función.
Del mismo modo, al exportar: