Так что трудно точно знать, что происходит, не имея возможности увидеть, как вы передаете реквизиты и какие именно данные они содержат. Ошибка, которую вы получаете, подразумевает, что вы на самом деле неправильно отправляете массив recipes.
Честно говоря, я больше никогда не использую функции без сохранения состояния в реакции, потому что PureComponent обычно преформируется лучше, потому что он встроен в shouldComponentUpdate, который предотвращает ненужные повторные рендеринг. Вот как я бы написал этот компонент:
import React, { PureComponent } from 'react';
class Recipes extends PureComonent {
recipeList = () => {
const recipes = this.props;
const recipeArray = recipes.map((recipe) => {
<div key={recipe.recipe_id}>
<img src={recipe.image_url} alt={recipe.title} />
<p>{recipe.title}</p>
</div>
});
return recipeArray;
}
render () {
return () {
<div>
{this.recipeList()}
</div>
}
}
}
export default Recipes;
При этом, я предполагаю, что вы написали свой компонент так: если бы вы использовали консоль для реквизита, вы бы обнаружили, что он на самом деле равен recipes, поэтому recipes.recipes не определены.