彼らはstaticあるので、あなたはES6の輸入を使用してこれを行うことはできません。
これは、コンパイル時にインポートおよびエクスポートするものを指定する必要があり、実行時に変更に反応できないことを意味します。
配列のようなものを使用すると、コードが実行されてシステムがインポートする内容を自信を持って認識できるようになります。
これを回避するための現在の唯一の方法は、require
CommonJSのアプローチを使用することです。
const routes = Array
.from({ length: 10 }) // create array of 10 elements
.map((_, i) => require(`../samples/sample${i + 1}`)) // map each element to an imported file using the index
.map((c, i) => (// map each component to a route
<Route
path={`/sample${i + 1}`}
component={c}
/>
))
また、1つに2つのmap
のループを組み合わせることができます。
const routes = Array
.from({ length: 10 })
.map((c, i) => (
<Route
path={`/sample${i + 1}`}
component={require(`../samples/sample${i + 1}`)}
/>
))
ない、あなたはおそらく10種類のサンプル成分を必要としないことを、より多くの可能性が言われていること。軽微な違いのために個々のコンポーネントを作成するのではなく、単一のコンポーネントを使用してその動作を決定するタイプを渡すのはなぜでしょうか?
import Sample from './sample'
const routes = Array
.from({ length: 10 }) // create array of 10 elements
.map((c, i) =>
<Route // map each component to a route
path={`/sample${i + 1}`}
component={props => <Sample type={i + 1} {...props} />}
{/* ^now every sample knows which one it is */}
/>
)
は実際には、同様に複数のルートを必要としない可能性があり、ダイナミック・セグメントは、試料の種類を表し、そのコンポーネントに沿って通過して単一の経路を使用することができます。
import Sample from './sample'
<Route path="/sample/:type" component={({ params }) => <Sample type={params.type} />} />
ES6モジュールに動的なインポートを追加するproposalは現在あり:
Promise.all(
Array
.from({ length: 10 }) // create array of 10 elements
.map((_, i) => import(`../samples/sample${i + 1}`)) // map each element to a promise resolving to the imported file
).then(components => { // map each component to a route
const routes = components
.map((c, i) => (
<Route
path={`/sample${i + 1}`}
component={c}
/>
))
})
を短縮します私はあなたのベースのソリューションを「必要」とそれが動作続くあなたは、プログラムのディレクトリ構造 – Bergi