We can render multiple components at the same time using a for loop with JSX:
const elements = []
const array = [1,2,3,4,5]
for(let i = 0; i < array.length; i++){
elements.push(<li>{array[i]}<li/>)
}
ReactDOM.render(
<ol>{elements}</ol>,
document.getElementById('root')
)
We can use map() method to create an array of React Elements.
The map() method is called on an array and iterate over each item of the array and return a new version of each.
For example
const list =[
{product:"Apple", price:3},
{product:"Banana", price:1},
{product:"Carrot", price:2},
{product:"Donuts", price:5},
{product:"Eggplant", price:4}
]
const elements = list.map( (item) => {
return <li>Product: {item.product} | Price: ${item.price} </li>
})
ReactDOM.render(
<ol>{elements}</ol>,
document.getElementById('root')
)
We can also use map() method directly inside a JSX expression:
ReactDOM.render(
<ol>{
list.map( (item) =>
<li>Product: {item.product} | Price: ${item.price} </li>
)}
</ol>,
document.getElementById('root')
)
React uses Keys to help render list items quickly. It identifies which items have changed, are added, or are removed.
Keys should be a string that uniquely identifies a list item from the other items on the list, such as an ID attribute.
For example
const list =[
{id: 1, product:"Apple", price:3},
{id: 2, product:"Banana", price:1},
{id: 3, product:"Carrot", price:2},
{id: 4, product:"Donuts", price:5},
{id: 5, product:"Eggplant", price:4}
]
const elements = list.map( (item) => {
return <li key={item.id}>Product: {item.product} | Price: ${item.price} </li>
})
ReactDOM.render(
<ol>{elements}</ol>,
document.getElementById('root')
)
It is useful to be able to build a React Component that can dynamically generate a list from an array property that is passed into it.
class ProductList extends React.Component{
constructor(props){
super(props)
}
render(){
const elements = this.props.productArray.map( (item,index) => {
return <li key={item.id}>Product: {item.product} | Price: ${item.price} </li>
})
return <ol>{elements}</ol>
}
}
const list =[
{id: 1, product:"Apple", price:3},
{id: 2, product:"Banana", price:1},
{id: 3, product:"Carrot", price:2},
{id: 4, product:"Donuts", price:5},
{id: 5, product:"Eggplant", price:4}
]
ReactDOM.render(
<ProductList productArray = {list}/>,
document.getElementById('root')
)