Questa domanda ha riguardato l'importazione dinamica di file JSX in React.React: dynamic import jsx
Fondamentalmente abbiamo un componente principale che rende dinamicamente altri componenti basati su una struttura memorizzata in un database. I componenti dinamici sono memorizzati in una sottodirectory "./Components". Definiamo in modo statico il questo come:
import CompA from './Components/CompA';
import CompB from './Components/CompB';
var components = {
'CompA': CompA,
'CompB': CompB
}
e rendiamo utilizzando:
var type = 'CompA'
var Component = components[type];
...
<Component />
Anche se questo funziona bene, è un po 'troppo statico per noi. Abbiamo 100+ componenti (CompA/CompBs) e definirli staticamente non funziona.
È possibile importare tutti i file JSX in "./Compontents" e popolare l'array di componenti?
E, cosa sarebbe davvero (davvero) bello se potessimo inviare il percorso "./Components" come supporto ai componenti principali. E il componente principale userebbe questo percorso per importare i file .jsx. Come questo:
<MainComponent ComponentPath="./SystemComponents">
userei "./SystemComponents", come percorso per i file .JSX e:
<MainComponent ComponentPath="./UserComponents">
userei "./UserComponents" come percorso di importazione.
Bello! Questa soluzione funziona davvero molto bene per noi. Possiamo importare tutte le librerie (i diversi percorsi nell'esempio sopra) e passare la libreria desiderata come oggetti di scena. PS. Per qualche motivo non sono riuscito a far funzionare l'esportazione CompA da "./comp_a", ho dovuto prima importarli e li ho esportati in un oggetto json. – mathan
@mathan un'esportazione di linea è parte del preset di babel stage-1: [export-extensions] (http://babeljs.io/docs/plugins/transform-export-extensions/) –