2017-09-05 89 views
1

我有一個簡單的應用程序作出反應,包含在內創建容器顯示的數據的陣列陣營:重複基於陣列長度ReactDOM.render

var products = [ 
{ name: 'product 1'}, 
{ name: 'product 2' }, 
{ name: 'product 3' }, 
{ name: 'product 4' } 
]; 

var Status = React.createClass({ 

render: function() { 

    var listItems = this.props.items.map(function (item) { 
     return (
      <h2 key={item.name}> 
       {item.name} 
      </h2> 
     ); 
    }); 
    return (   
     <div className="ContainerName"> 
     {listItems}            
     </div>  
    ); 
} 
}); 

ReactDOM.render(<Status items={products} />, 
document.getElementById('statusContainer')); 

我的問題是,我想要的「容器名稱」 div(或Status var)根據數組中項目的數量進行渲染(4次,但目前只渲染一次)。

我試過,但它不工作:

ReactDOM.render(<Status items={products} />, 
document.getElementById('statusContainer'), products.length); 

是ReactDom只是爲了使用一次?或者有沒有一種方法可以根據數組長度重用組件?還是我完全誤解?

+0

你想實現什麼?爲什麼你想使用ReactDOM.render 4次任何特定的原因? –

+0

@MayankShukla我只是想要根據數組中的項目數來呈現div,它並不一定是特定的4次 - 如果數組有10個項目,因此我會讓div呈現10次。 – Whirlwind991

+0

渲染函數必須返回任意數量的子元素的單個根元素。因此,你可以將'h2'封裝在'div.ContainerName'中,並將其中的一個重命名爲'div.statusContainerRoot'。 – Derek

回答

1

渲染函數必須返回任意數量的子元素的單個根元素。這將工作:

var products = [ 
    { name: 'product 1'}, 
    { name: 'product 2' }, 
    { name: 'product 3' }, 
    { name: 'product 4' } 
]; 

var Status = React.createClass({ 
    render: function() { 
    var listItems = this.props.items.map(item => { 
     return (
     <div className="ContainerName" key={item.name}> 
      <h2>{item.name}</h2> 
     </div> 
     ); 
    }); 

    return <div className="statusComponentRoot">{listItems}</div>; 
    } 
}); 

ReactDOM.render(
    <Status items={products} />, 
    document.getElementById('statusContainer') 
); 
+0

啊,這是有道理的。是的,我認爲只需複製渲染足夠簡單,但我猜不是!歡呼的幫助,多數民衆贊成真棒 – Whirlwind991