2017-12-08 4 views
3

名前文字列を使用してコンポーネントをレンダリングできないようです。私は、レンダリング可能な既存の対応するコンポーネントを持つコンポーネント名文字列を動的に生成できるようにしたいと考えていました。文字列名でコンポーネントをレンダリングする方法

array constはJSONデータを使用して作成されるため、コンポーネントを識別するためにstringの値を使用する必要があります。ここで

は私がやろうとしているものです:

import Module1 from './module1'; 
import Module2 from './module2'; 
import Module3 from './module3'; 

const array = ['Module1', 'Module2', 'Module3']; 

{array.map((Module, index) => 
<Module /> 
)} 

代わりに既存のコンポーネントを参照し、それをレンダリングする、反応するすべて小文字であるカスタム要素タグをレンダリングしています。

注:これらのコンポーネント['Module1', 'Module2', 'Module3']は、あなたがオブジェクト内のコンポーネントを入れて、キーとして文字列を使用してそれらにアクセスすることができextends Component

答えて

5

として作成されます。

import Module1 from './module1'; 
import Module2 from './module2'; 
import Module3 from './module3'; 

const array = ['Module1', 'Module2', 'Module3']; 

const modules = { 
    Module1, 
    Module2, 
    Module3, 
}; 

{moduleOrderArr.map((key, index) => { 
    const Module = modules[key]; 
    return <Module />; 
})} 
+0

ただし、コンポーネント名はわかりません。どのようにこの部分は 'constモジュール= { モジュール1、 モジュール2、 モジュール3、 }することができます; ' 動的であることができますか? – Louis

+1

インポートするすべてのコンポーネントをオブジェクトに入れることができます。また、キーをコンポーネントの名前以外に設定することもできます。 – Max

+0

ああ!いい案。ありがとう – Louis

関連する問題