2017-12-26 12 views
0

文字列の配列からコンポーネントを呼び出すリアクト動的に私のような配列を持っている

export class MyView extends React.Component{ 
    constructor(props){ 
     super(props); 
     this.state = {}; 
    } 
    render(){ 
     return(
      <div> 
       {options.map(obj => <obj.name/>) 
      </div> 
     ) 
    } 
} 

export const ComponentOne = props => (<div>{this.props.content}</div>) 
export const ComponentTwo = props => (<div>{this.props.content}</div>) 

は、その後、私は私の見解を持っています

私はこれらのコンポーネントを動的にレンダリングしたいのですが、どのようにするのか分かりません。

+1

'options'で名前の代わりにコンポーネント自体を使用するとどうなりますか? '{id:1、name = ComponentOne} 'です。それは動作するはずですか? –

+0

この配列に含めることができるすべてのコンポーネント名を知っていますか?はいの場合は、switch文を使用してください。 –

+0

これを確認してくださいhttps://stackoverflow.com/questions/47649723/react-rendering-dynamic-inner-components/47649759#47649759 –

答えて

1

コンポーネントクラスの名前を保持するのではなく、クラス自体を保持してください。同様に:

const options = [ 
    {id: 1, componentClass: ComponentOne}, 
    {id: 2, componentClass: ComponentTwo} 
]; 

export class MyView extends React.Component{ 
    constructor(props){ 
     super(props); 
     this.state = {}; 
    } 
    render(){ 
     return(
      <div> 
       { 
        options.map(obj => { 
        const Class = obj.componentClass; 

        return <Class />; 
        }) 
       } 
      </div> 
     ) 
    } 
} 
+0

私はどのように ' 'に小道具を渡すでしょうか? –

+0

あなたが渡す小道具は何ですか –

+0

例えばMyView親コンポーネントのIDです。ありがとうございます。これはうまくいった。 –

関連する問題