Обновите getIngredients
, чтобы использовать также идентификатор рецепта и вместо этого сохранить его в состоянии.
Переключить ингредиент одного рецепта
this.state = {
userInput: '',
getRecipe: [],
ingredientsId: null
}
...
getIngredients = recipeId => e => {
e.preventDefault();
this.setState(prevState => ({
ingredientsId: prevState.ingredientsId ? null : recipeId,
}));
}
...
<Content
userInput={this.state.userInput}
recipe={this.state.getRecipe}
getIngredients={this.getIngredients}
ingredientsId={this.state.ingredientsId} // <-- pass id
/>
Условно установить стиль отображения в Content
.
const Content = ({ userInput, recipe, getIngredients, ingredientsId }) => {
...
<button
onClick={getIngredients(recipe.id)} // <-- pass id
className="getingredients"
>
Ingredients
</button>
<div
style={{
// set display style
display: ingredientsId === recipe.id ? "block" : "none"
}}
className="containingredients"
>
<ul className="ingredients">
<li className="ingredient">{i.text}</li>
</ul>
</div>
...
Переключить несколько ингредиентов рецепта
То же, что и выше, с небольшими изменениями
Состояние - карта
this.state = {
userInput: '',
getRecipe: [],
ingredientsId: {},
}
Переключить идентификатор в обработчике
getIngredients = recipeId => e => {
e.preventDefault();
this.setState(prevState => ({
ingredientsId: {
...prevState.ingredientsId,
[recipeId]: !prevState.ingredientsId[recipeId]
},
}));
}
Найти recipeId на пройденной карте
style={{
// set display style
display: ingredientsId[recipe.id] ? "block" : "none"
}}