I have a map function that is supposed to take the data from an list I’ve created and show it to the user but it give me a typerror whenever I try to do that, here’s my map function:
{product.map((item, idx)=> <div key={idx}> <h3 className='productName'>{item[idx].name}</h3> <div className='productImageContainer'> <img src={item[idx].image}></img> </div> <span className='productPrice'><strong>${item[idx].Price}.00</strong></span> <br></br> <Button className='removeProductButton' variant='danger'><MdCancel></MdCancel> Remove</Button> </div>)}
And here’s the piece of code where I attach the items to the array:
const [product, getProduct]= useState([]) const getProducts=()=> { let X = JSON.parse(localStorage.getItem('products')) getProduct([...product, X]) }
I get the following error: “TypeError: Cannot read property ‘name’ of undefined”, I’ve tried manually console logging each element of the list and it is definitely not undefined, why is that happening and how can I fix it?
Advertisement
Answer
You can access the name
property directly on item
like so:
<h3 className='productName'>{item.name}</h3>
item
is the current element that is being processed in your list.