
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeThis is a classic nested array issue! You're absolutely right that you need a second mapping. The problem is that collection.products is an array, so you can't access .title directly on it - you need to map through that array as well.
Here's how to fix it:
const Home = ({ product, collection }) => {
return (
<>
<Collection collection={collection} />
{(collection ?? []).map((collection) => (
<div key={collection.title}>
{/* Map through the products array */}
{(collection.products ?? []).map((product) => (
<div key={product._id || product.title}>
{product.title}
</div>
))}
</div>
))}
</>
);
};What's happening:
collection arraycollection.products is another array of product objects.map() to iterate through each product in that arrayproduct.title on each individual product objectA few tips:
?? [] safety check on collection.products too, in case a collection has no productsproduct._id if available (Sanity documents have _id fields), falling back to product.title if needed{console.log(collection.products[0]?.title)} to see the first product's titleIf you're still getting undefined:
Make sure your GROQ query is actually fetching the product data. If products is a reference field, you need to dereference it in your query:
*[_type == "collection"] {
title,
products[]-> {
title,
_id
}
}The -> operator dereferences the product references so you get the actual product data, not just the reference IDs. Check out the GROQ references documentation for more details on how dereferencing works in Sanity queries.
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.
Content operations
Content backend


The only platform powering content operations
By Industry


Tecovas strengthens their customer connections
Build and Share

Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag store