2017-02-24 167 views
0

我有以下阵列:动态渲染阵营

const elements = [ 
    { 
     title: "foo" 
     section: <div>Foo <button onClick={sayHello}>Greet</button></div> 
    }, 
    { 
     title: "bar" 
     section: <div>Bar <button onClick={sayHello}>Greet</button></div> 
    } 
]; 

我想要的东西,如呈现组件:

const someSections = this.state.elements.map((item, i) => (
    <div key={i}> 
    {item.section} 
    </div> 
)); 

... 

render(){ 
    return (
     ... 
     <div> 
      {someSections} 
     </div> 
    ) 
} 

但我不能使它们。错误是:

Uncaught Error: objects are not valid as a React child

+0

item.section,而不是在你的地图link.section:d – Kornflexx

+0

你的数据真的不应该包含HTML,只有模板 –

回答

1

检查工作的解决方案:

const data = [ 
 
    { 
 
     title: "foo", 
 
     section: <div>Foo <button>Greet</button></div> 
 
    }, 
 
    { 
 
     title: "bar", 
 
     section: <div>Bar <button>Greet</button></div> 
 
    } 
 
] 
 

 

 
class App extends React.Component{ 
 
    render(){ 
 
    return(
 
     <div> 
 
      { 
 
       data.map((item,i)=>{ 
 
        return <div key={i}>{item.section}</div> 
 
       }) 
 
      } 
 
     </div> 
 
    ) 
 
    } 
 
} 
 

 
ReactDOM.render(
 
    <App/>, 
 
    document.getElementById('app') 
 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 

 
<div id='app'></div>

1

通常你会做这样的事情。

render(){ 
    let someSections = this.state.elements.map((item, i) => (
     <div key={i}> 
      {item.section} 
     </div> 
    )); 

    return (
     <div> 
      {someSections} 
     </div> 
    ) 
}