ho un index.js
file che legge:
import aReducer from "./ducks/a";
import bReducer from "./ducks/b";
import * as aSelectors from "./ducks/a";
import * as bSelectors from "./ducks/b";
console.log(aReducer) //function i expect
console.log(aSelectors) //object with keys to selectors i expect
export { aReducer, bReducer, ...aSelectors, ...bSelectors };
Se io console.log
in questo file vedo che i riduttori sonole funzioni che mi aspetto e l'alias dei selettori sono oggetti con tasti ai selettori che mi aspetto. I riduttori sono esportazioni predefinite per i file duck e i selettori sono esportazioni dallo stesso rispettivo file.
Tuttavia, quando provo a importare questo modulo conun altro file sono solo in grado di importare i due riduttori. I due selettori non sono definiti. Ho pensato che la destrutturazione avrebbe aggiunto ogni chiave al mio oggetto di esportazione. Che cosa sto facendo di sbagliato?
other_file1.js
import { aReducer, bReducer } from "my-module"; //works!
other_file2.js
import { someSelectorThatWasInMyaSelectorsObject } from "my-module"; //does NOT work!
risposte:
1 per risposta № 1Non puoi usare ...
in un export {};
bloccare. È un elenco esplicito di nomi proprio come import {name} from
è. Non è un oggetto con le chiavi esportate. per esempio. allo stesso modo delle importazioni
import { foo as fooRenamed } from "";
con export
è
export {
fooVar as foo,
};
Il export
block è un elenco esplicito di variabili da esportare, con un nome esplicito facoltativo per l'esportazione. Non ci sono oggetti coinvolti.
In particolare, non ci sono oggetti coinvoltipoiché i nomi delle esportazioni vengono elaborati e conosciuti prima ancora che il corpo del file sia stato eseguito, quindi non solo gli oggetti non sono consentiti, ma sono impossibili da consentire perché gli oggetti richiedono l'esecuzione per esistere.
Per ottenere quello che vorresti, dovresti usare:
// Export the referenced files" default under two specific names.
export { default as aReducer } from "./ducks/a";
export { default as bReducer } from "./ducks/b";
// Re-export every named export from these two files.
export * from "./ducks/a";
export * from "./ducks/b";