javascript - 我正在尝试使用 useEffect 反应钩子从服务器获取数据
问题描述
我正在尝试使用 fetch api 从服务器获取数据,并使用 uuidv4 作为键在无序列表中显示此数据,我尝试使用 react 的 useEffect 钩子来执行此操作,但是,它获取数据但随后它说我的所有键是相同的,我认为 useEffect 是原因,我尝试添加一个空数组作为第二个参数以防止重新渲染,但是它说我缺少一个依赖项,当我将依赖项放入其中时重新渲染并且 uuid 再次相同. 我不知道该怎么做我对钩子相对较新。
import React, { useState, useEffect } from "react";
import "./App.css";
const uuidv4 = require("uuid/v4");
function App() {
const [country, setCountry] = useState({
country: []
});
useEffect(() => {
console.log("fetching data");
fetch("http://localhost:5000/country")
.then(res => res.json())
.then(data => setCountry({...country, country: data }));
}, []);
return (
<>
<ul>
{country.country.map(item => {
return <li key={uuidv4}>{item.name}</li>;
})}
</ul>
</>
);
}
export default App;
解决方案
我认为你必须调用它来生成 uuid:
return <li key={uuidv4()}>{item.name}</li>;
推荐阅读
- android - 如何将 onBackPressedCallback 添加到片段?
- node.js - JSLint 和 ESLint 问题(括号)
- wordpress - 如何仅从一个有多个类别的自定义帖子类别中获取帖子?
- python - pandas 数据框,对按列名同时分组的行应用 t 检验(有重复!)
- javascript - ie11 中 setMaxDate(new Date(today)) 的替代函数
- java - 带有 try-catch 的 Pig latin Java 程序,翻译通过函数
- python - Python - 在一行中打印多种颜色
- c# - 在实体框架中,id 值不会增加 1,而是增加 1000?
- module - Scrapy:没有名为“scrapy.contrib”的模块
- javascript - Javascript 在 10 秒后运行