【发布时间】:2021-03-20 05:13:21
【问题描述】:
我的控制台出现错误,
我的 JSON 在这里 https://dev.justinblayney.com/wp-content/uploads/2020/12/main-menu.json_.zip
警告:列表中的每个孩子都应该有一个唯一的“key”属性。
我的页面上显示的是(所以它们都是独一无二的,所以 WTF 反应)
键:2429 键:2430 键:3859 键:2421 钥匙:2802 密钥:2428
顺便说一句,我发现使用函数是获取 JSON 文件的一种糟糕方法,我还会收到内存泄漏警告,而且我在网上看到的每个教程都使用类或 axios
检查MyRoutes的渲染方法。有关更多信息,请参阅https://reactjs.org/link/warning-keys。
MyRoutes@http://localhost:3000/react-wordpress-headless/static/js/main.chunk.js:63:81
div
Router@http://localhost:3000/react-wordpress-headless/static/js/0.chunk.js:35747:30
BrowserRouter@http://localhost:3000/react-wordpress-headless/static/js/0.chunk.js:35367:35
app@http://localhost:3000/react-wordpress-headless/static/js/main.chunk.js:94:1
function MyRoutes() {
const [myrt, setMyrt] = useState([]);
useEffect(() => {
fetch("main-menu.json" ,{
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
})
.then(res => res.json())
.then(json =>{
setMyrt(json.items)}
)
});
return (
<>
{Object.keys(myrt).map((ky, idx)=> (
<>
<h2>KEY: {myrt[ky].ID} </h2>
<Route exact path={`/${myrt[ky].slug}`} component={Page} key={myrt[ky].ID} /></>
))}
</>
);
}
【问题讨论】:
-
您的
key不在实际的孩子身上,即片段。 -
我该如何解决这个问题?
-
jonrsharpe 是正确的。此外,您可能看到的内存泄漏是您没有将任何依赖项传递给 useEffect,因此它在每次渲染时都运行。