Этот вопрос связан с динамическим импортом файлов JSX в React.Реакция: динамический импорт jsx
В принципе у нас есть один основной компонент, который динамически отображает другие компоненты на основе структуры, хранящейся в базе данных. Динамические компоненты хранятся в подкаталоге «./Components». Мы статически определить это как:
import CompA from './Components/CompA';
import CompB from './Components/CompB';
var components = {
'CompA': CompA,
'CompB': CompB
}
и мы предоставляем им с помощью:
var type = 'CompA'
var Component = components[type];
...
<Component />
Хотя это работает отлично, это немного слишком статичным для нас. У нас есть еще 100 компонентов (CompA/CompBs), и статическое их определение не работает.
Можно ли импортировать все файлы JSX в «./Compontents» и заполнить компоненты-массивы?
И что было бы действительно (действительно) приятно, если бы мы могли послать путь «./Components» в качестве опоры для основных компонентов. И основной компонент будет использовать этот путь для импорта файлов .jsx. Как это:
<MainComponent ComponentPath="./SystemComponents">
использовать ли "./SystemComponents" в качестве пути для .JSX файлов и:
<MainComponent ComponentPath="./UserComponents">
использовать ли "./UserComponents" в качестве пути импорта.
Ницца! Это решение действительно работает очень хорошо для нас. Мы можем импортировать все библиотеки (разные пути в приведенном выше примере) и передать нужную библиотеку в качестве реквизита. PS. По какой-то причине я не смог получить экспорт CompA из «./comp_a» для работы, должен был сначала импортировать их, а их экспортировать в объект json. – mathan
@mathan экспорт одного лайнера является частью предустановки Babel stage-1: [export-extensions] (http://babeljs.io/docs/plugins/transform-export-extensions/) –