この質問は、JSXファイルをReactに動的にインポートすることに関するものです。React:dynamic import jsx
基本的に、データベースに格納されている構造に基づいて他のコンポーネントを動的にレンダリングする主なコンポーネントが1つあります。動的コンポーネントは、サブディレクトリ "./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)を持っていて、それらを静的に定義しても機能しません。
"./Compontents"内のすべてのJSXファイルをインポートしてcomponents-arrayに取り込むことはできますか?
そして、 "./Components"パスをメインコンポーネントの小道具として送ることができれば、本当に(本当に)いいと思います。また、メインコンポーネントはこのパスを使用して.jsxファイルをインポートします。このように:
<MainComponent ComponentPath="./SystemComponents">
.jsxのファイルのパスとして "./SystemComponents" を使用してます:
<MainComponent ComponentPath="./UserComponents">
は、インポートパスとして "./UserComponents" を使用します。
ニース!このソリューションは実際に私たちにとって本当にうまく機能します。すべてのライブラリ(上記の例では異なるパス)をインポートし、目的のライブラリをpropsとして渡すことができます。 PS。なんらかの理由で、エクスポートCompAを "./comp_a"から動作させることができず、まずそれらをインポートしてjsonオブジェクトにエクスポートしなければなりませんでした。 – mathan
@mathan 1つのライナーのエクスポートは、babel stage-1プリセットの一部です:[export-extensions](http://babeljs.io/docs/plugins/transform-export-extensions/) –