Redux: Erro de código no exemplo explicado no documento da API para "combineReducers"?

Criado em 14 abr. 2016  ·  3Comentários  ·  Fonte: reduxjs/redux

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 )) ??

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 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";

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

caojinli picture caojinli  ·  3Comentários

wmertens picture wmertens  ·  4Comentários

vraa picture vraa  ·  3Comentários

olalonde picture olalonde  ·  3Comentários

amorphius picture amorphius  ·  3Comentários