2017-10-07 14 views
1

私はHTMLテーブルを返すReactコンポーネントを持っています。 <Options list={item} />生のHTMLを返す反応コンポーネント

これは、テーブルを返す機能性成分である:

const Options = (props) => { 

let table = ` 
<table className="table table-striped table-hover "> 
     <thead> 
      <tr> 
      <th>#</th> 
      <th>Option</th> 
      <th>Votes</th> 
     </tr> 
     </thead> 
     <tbody> 
` 

for (let i = 0; i < props.list.options.length; i++){ 
    table += `<tr> 
    <td>${i+1}</td> 
    <td>${props.list.options[i].option}</td> 
    <td>${props.list.options[i].vote}</td> 
    </tr> 
    ` 
} 

table += `</tbody></table>` 
return table; 
} 

しかし、私は、画面上に表示することです:

enter image description here

どのようにHTMLを歩んを使用して

呼び出されますブラウザでレンダリングされていませんか?

+1

これは実際に文字列を返すためです。 –

+0

[JSXについて学ぶ](https://reactjs.org/docs/jsx-in-depth.html)と、現在使用しているHTMLの文字列との違いをお勧めします。 –

答えて

2

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

const Options = (props) => { 

    let table = 
     (<table className="table table-striped table-hover "> 
      <thead> 
      <tr> 
       <th>#</th> 
       <th>Option</th> 
       <th>Votes</th> 
      </tr> 
      </thead> 
      <tbody> 
      {props.list.options.map((op, i) => { 
       return (
       <tr key={i}> 
        <td>{i+1}</td> 
        <td>{op.option}</td> 
        <td>{op.vote}</td> 
       </tr> 
       ) 
      })}; 
      </tbody> 
     </table>); 

    return table; 
    } 
+0

あなたは 'キー'がありません。 –

+0

@ArupRakshit指摘ありがとう –

0

あなたは以下のようJSXを使用する場合は、HTMLとしてレンダリングされます:

return <div> {table} </div> 

しかし、私はこの機能コンポーネントを記述します。あなたは、文字列を返却する

const Options = props => { 
    const tableBody = props.list.options.map((obj, i) => (
    <tr key={i}> 
     <td>{i + 1}</td> 
     <td>{obj.option}</td> 
     <td>{obj.vote}</td> 
    </tr> 
)); 

    return (
    <table className="table table-striped table-hover"> 
     <thead> 
     <tr> 
      <th>#</th> 
      <th>Option</th> 
      <th>Votes</th> 
     </tr> 
     </thead> 
     <tbody>{tableBody}</tbody> 
    </table> 
); 
}; 
関連する問題