No exemplo descrito como parte do documento API de "combineReducers", no momento da criação da loja, "redutor" como um parâmetro é passado para createStore no arquivo " app.js " ( let store = createStore(reducer)
).
No entanto, em " reducers / index.js ", o nome da função é "combineReducers" e não "redutor" ( export default combineReducers({..})
).
Portanto, o parâmetro passado na criação da loja não deveria ser "combineReducers" (Ex: let store = createStore(combineReducers
)) ??
Eu diria que não. Se você pensar bem, o Redux só tem uma única função redutora. O fato de que este exemplo está usando combineReducers
para criar essa função é um detalhe de implementação. No que diz respeito a app.js
, ele não sabe ou não se importa com o que está acontecendo dentro dessa função, como a criamos ou o que ela está fazendo.
Além disso, observe que quando reducers/index.js
faz export default combineReducers({})
, na verdade não está _criando_ uma coisa chamada "combineReducers". Ele está dizendo "pegue o resultado desta chamada de função, seja ele qual for, e torne-o a exportação padrão." Na verdade, tecnicamente, essa saída nem mesmo tem nenhum nome de variável real associado a ela.
Finalmente, observe que quando você faz export default
, qualquer arquivo importado pela exportação padrão pode dar qualquer nome que desejar para a variável local, da mesma forma que uma definição de função pode nomear um parâmetro diferente de qualquer nome de variável usado em o site da chamada. Exemplos:
function someFunction(a, fred, randomVariableName) {}
const firstVariable = 1;
const theMeaningOfLife = 42;
const aTotallyUselessName = "Whatever";
someFunction(firstVariable, theMeaningOfLife, aTotallyUselessName);
Observe como os nomes das variáveis que defino fora da função não precisam ter nenhuma correspondência com os nomes dos parâmetros dentro da função.
Da mesma forma, ao exportar:
// fileA.js
export default const aThing = 42;
// fileB.js
import iCanGiveThisAnyNameIWant from "fileA";
@markerikson Obrigado por essas ótimas respostas.
Muito obrigado @markerikson.
Estou aprendendo Redux para ser usado com JQuery, sem o conhecimento de React. Sua resposta agora me ajuda a entender melhor os exemplos com o código React.
Comentários muito úteis
Eu diria que não. Se você pensar bem, o Redux só tem uma única função redutora. O fato de que este exemplo está usando
combineReducers
para criar essa função é um detalhe de implementação. No que diz respeito aapp.js
, ele não sabe ou não se importa com o que está acontecendo dentro dessa função, como a criamos ou o que ela está fazendo.Além disso, observe que quando
reducers/index.js
fazexport default combineReducers({})
, na verdade não está _criando_ uma coisa chamada "combineReducers". Ele está dizendo "pegue o resultado desta chamada de função, seja ele qual for, e torne-o a exportação padrão." Na verdade, tecnicamente, essa saída nem mesmo tem nenhum nome de variável real associado a ela.Finalmente, observe que quando você faz
export default
, qualquer arquivo importado pela exportação padrão pode dar qualquer nome que desejar para a variável local, da mesma forma que uma definição de função pode nomear um parâmetro diferente de qualquer nome de variável usado em o site da chamada. Exemplos:Observe como os nomes das variáveis que defino fora da função não precisam ter nenhuma correspondência com os nomes dos parâmetros dentro da função.
Da mesma forma, ao exportar: