javascript - 从 API 调用接收数据后,React 没有更新 UI(使用钩子)
问题描述
const [data, setData] = useState(null);
useEffect(() => {
const getData = async () => {
await fetch('http://localhost:4000/data')
.then(res => res.json())
.then(fetchedData => {
setData(fetchedData);
console.log(fetchedData)
})}
getData();
}, [])
return (
<div className="App">
<Header />
<ul>{ data &&
data.map((item, index) => {
item.map(object => {
Object.keys(object).map((key) =>
(<li key={index}>{object[key]}</li>)
);
})
})}</ul>
</div>
数据结构是这样的:
[[{'sum': 210}], [{'total': 210}], [{'free': 210}], [{'discounted': 210}]]
当我在控制台中记录数据时,我看到了它,但我在 UI 中什么也看不到<ul></ul>
解决方案
您不会从传递给的箭头函数返回任何内容.map(..)
。添加一个return
语句或去掉周围的大括号
data.map((item, index) =>
item.map(object =>
Object.keys(object).map((key) =>
(<li key={index}>{object[key]}</li>)
)
)
)
或者
data.map((item, index) => {
return item.map(object => {
return Object.keys(object).map((key) =>
(<li key={index}>{object[key]}</li>)
);
})
})
推荐阅读
- ag-grid - 使用无限滚动既不会调用 onRowDataChanged 也不会调用 onRowDataUpdated
- php - php我如何只访问字符串的一部分
- flutter - 有什么方法可以上传我的图片并使用 networkImage 颤振
- javascript - NodeJS/Nodemailer 可以在本地使用nodemailer吗?问题 - 从未收到问候
- linux - [Bash]从 txt 文件中读取 URL
- flutter - Flutter 使用 onTap 将数据传递到新屏幕
- scala - Spark Drop 重复删除所有行
- javascript - Froala 编辑器在动态附加后不起作用
- java - 如何将 if 和 for each 转换为 java Streams
- php - Worpress 超链接将颜色更改为白色