2017-02-01 6 views
0

私は意味論的UIを使用しており、アコーディオン成分を構築する必要があります。これは私が思いついたものですが、.title.contentの使用法が間違っているため、これは機能しません。 これはどのように正しく行われるべきですか?反応成分の2つの要素を繰り返す方法

import React, { Component } from 'react'; 

export default class Example extends Component { 
    getData() { 
     // some data 
    } 

    render() { 
     return (
      <div className="ui styled fluid accordion"> 
       { 
        this.getData().map((element) => { 
         return (
          <div className="title"> 
           <i className="dropdown icon"></i> 
           { element.title } 
          </div> 
          <div className="content"> 
           <ul className="ui list"> 
            <li>Lorem ipsum</li> 
           </ul> 
          </div> 
         ); 
        }) 
       } 
      </div> 
     ); 
    } 
} 

更新

結果は、あなたが関数からのみコンポーネントを返すことができ

​​

答えて

3

ようにする必要があります。

地図は間違った選択です。

// build the array of all elements 
const accordionChildren = []; 
this.getData().forEach(element => { 
    accordionChildren.push(
    <div className="title">{element.title}</div>, 
    <div className="content">{element.content}</div> 
); 
}); 

return (
    <div className="ui styled fluid accordion"> 
    {accordionChildren} 
    </div> 
); 
+0

たぶん私はあなたをmissunderstandingていますが、私はしないでください周囲のdivが必要です。私は 'title'''''''''''''''''などが必要です。... – user3142695

+0

@ user3142695は答えを更新しました – webdeb

0

それは、コードのどの部分で二つの成分を返すために無効な構文です:あなた機能をレンダリングでこれを試してみてください。問題は、このスニペットです:

... 

return (
    <div className="title"> 
     <i className="dropdown icon"></i> 
     { element.title } 
    </div> 
    <div className="content"> 
     <ul className="ui list"> 
      <li>Lorem ipsum</li> 
     </ul> 
    </div> 
); 

... 

しかし、あなたがそれらは、配列を返すことで隣同士にレンダリングするために得ることができる必要があります:

... 

return (
    [(<div className="title"> 
     <i className="dropdown icon"></i> 
     { element.title } 
    </div>), 
    (<div className="content"> 
     <ul className="ui list"> 
      <li>Lorem ipsum</li> 
     </ul> 
    </div>)] 
); 

... 
関連する問題