【发布时间】:2020-10-26 00:15:23
【问题描述】:
我正在努力寻找一种方法将我的密钥传递给我的 return 语句的根 div
const [recipes, setRecipes] = useState([]);
const [search, setSearch] = useState("");
const [query, setQuery] = useState("chicken");
useEffect(() => {
getRecipes();
}, [query]);
const getRecipes = async () => {
const response = await fetch(`https://api.edamam.com/search?q=${query}&app_id=${App_ID}&app_key=${App_Key}`);
const data = await response.json();
setRecipes(data.hits);
console.log(data.hits);
}
const updateSearch = e => {
setSearch(e.target.value);
console.log(search);
};
const getSearch = e => {
e.preventDefault();
setQuery(search);
setSearch("")
};
return(
<div className="App">
<form onSubmit={getSearch} className="search-form">
<input
className="search-bar"
type="text" value={search}
onChange={updateSearch}
placeholder="Find a recipe" />
<button className="search-button" type="submit">
Search
</button>
</form>
<div className="recipes">
{recipes.map(recipe => (
<Recipe
title={recipe.recipe.label}
calories={Math.round(recipe.recipe.calories)}
image={recipe.recipe.image}
ingredients={recipe.recipe.ingredients}/>
))}
</div>
</div>
);
当我只将密钥传递给 Recipe 组件时,我收到错误消息“列表中的每个子项都应该有一个唯一的“密钥”道具。”
我假设这意味着我需要将密钥传递给 className 为“App”的 div。如何在不将 map 函数传递给整个 return 语句的情况下做到这一点?
【问题讨论】:
-
您不必将密钥传递给封闭的 div。您只需要为重复节点传递密钥,例如配方。只需确保每个项目都有一个唯一的密钥。
-
你的意思是在
组件中?因为当我这样做时,我仍然得到错误 -
我相信您可能将密钥添加到错误的位置。用代码示例查看我的答案。
标签: reactjs