所以我试图从Api (https://restcountries.com/v3.1/all)检索有关国家的数据语言显示如下:
languages: {
afr: "Afrikaans",
eng: "English",
nbl: "Southern Ndebele",
nso: "Northern Sotho",
sot: "Southern Sotho",
ssw: "Swazi",
tsn: "Tswana",
tso: "Tsonga",
ven: "Venda",
xho: "Xhosa",
zul: "Zulu"
}
我的代码是:
const langs = Object.values(country["languages"]) //create array of languages
console.log(langs)
return (
<ul>
{langs.map(each => {
//if i add console.log(each) here, it returns all of the languages in console
<li>
{each} doesn't display at all
</li>
})}
</ul>
)
如果你能告诉我我做错了什么,我将非常感激。提前感谢<3
代码的问题似乎是您没有在map
函数中返回JSX。
要解决这个问题,有两个解决方案。
1。在回调中使用括号(()
)
括号将使它返回传递给回调函数的值。
要使用它,可以使用下面的代码:
langs.map((each) => (
<li>{each}</li>
));
这段代码中唯一的区别是您直接返回它,用括号表示。
如果您想让它变成一行代码,您可以使用以下代码:
langs.map((each) => <li>{each}</li>);
这将做同样的事情;返回箭头函数中的JSX。
2。使用return
关键字
第二个选项是使用return
关键字。
您可以使用它返回JSX,以便map
函数可以使用它。
用法很简单。
langs.map((each) => {
return <li>{each}</li>;
});
这只是将JSX返回给map
函数供其使用。
总之,问题是您没有在map
函数中返回JSX。
有两种解决方法。
- 在回调 中使用括号使用
return
关键字