{items.map((el) => {
return (
<>
<div className={css.product}>
<div className={css.productImage}>
<img src={getImage(el.id)} />
</div>
<ProductGalleryLarge {...el}/>
</div>
</>
);
})}
<img src={getImage(el.id)} />
запустить асинхронную функцию которая добывает мне картинку превью<img src={getImage(el.id)} />
поместить в отдельный реактовский компонент, например, StorageImage. Далее возможны различные варианты в зависимости от того, что используется на проекте. Наиболее простой - useQuery - это обеспечит кэширование и обновление стейта из коробки, и все остальные детали, прям вот всё что нужно для данного кейса.