我的控制台出现错误,
我的JSON在这里https://dev.justinblayney.com/wp-content/uploads/2020/12/main-menu.json_.zip
警告:列表中的每个孩子都应该有一个唯一的“键”道具。
在我的页面上显示的是(所以他们都是独一无二的,所以WTF反应)
钥匙:2429钥匙:2430钥匙:3859钥匙:2421钥匙:2802钥匙:2428
另一方面,我发现使用函数获取JSON文件是一种糟糕的方式,我还收到内存泄漏警告,我在网上看到的每个教程都使用类或Axio
检查MyRoutes
的渲染方法。看见https://reactjs.org/link/warning-keys了解更多信息。MyRoutes@http://localhost:3000/react wordpress headless/static/js/main。大块js:63:81分区Router@http://localhost:3000/react-wordpress-headless/static/js/0。大块js:35747:30BrowserRouter@http://localhost:3000/react-wordpress-headless/static/js/0。大块js:35367:35App@http://localhost:3000/react wordpress headless/static/js/main。大块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} /></>
))}
</>
);
}
您需要顶部组件/标记上的键,该组件/标记正在地图上渲染。示例:如果使用div
<div key={myrt[ky].ID} >
<h2>KEY: {myrt[ky].ID} </h2>
<Route exact path={`/${myrt[ky].slug}`} component={Page} />
</div>
在列表子元素的第一级需要key
属性,因此我认为在您的示例中,您的. map
中的React片段需要有此键。
key
prop应该定义在最前面的元素上,在您的情况下是React。片段
。
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) => (
<React.Fragment key={ky}>
// ------------^
<h2>KEY: {myrt[ky].ID} </h2>
<Route exact path={`/${myrt[ky].slug}`} component={Page} key={myrt[ky].ID} />
</React.Fragment>
))}
</>
);
}
我知道这个问题有很多答案,但我找不到一个能完全解决我问题的答案。我得到以下错误:
我收到此错误消息,尽管我的列表元素确实有一个键:( 反应js:18745警告:数组或迭代器中的每个子级都应该有一个唯一的“key”属性。检查
我收到这个警告: 警告:数组或迭代器中的每个子级都应具有唯一的“键”属性。检查EventsTable的渲染方法。有关更多信息,请参阅fb.me/react-warning-keys。 react-runtime-dev.js?8fefd85d334323f8baa58410bac59b2a7f426ea7: 21998警告:数组或迭代器中的每个孩子都应该有一个唯一的“键”道具。检查事件的渲染方法。
我使用firebase作为数据库,使用Ionic React作为移动应用程序。我已经将firebase数据转换为数组,但当我想映射值时。它告诉我它应该有一个唯一的键,但我已经在元素的返回函数中放置了一个唯一的键。有人能告诉我我做错了什么吗?谢谢 下面是我将对象转换为数组的代码 作为回报 我得到的是
我正在为一个看起来像这样的纸牌游戏制作一个反应大厅:大厅图像 每个名称和“kick”按钮都是一个react组件,我根据名称列表(该列表中的所有名称都是唯一的)呈现该组件。我认为,由于名称是唯一的,我可以使用名称作为键,但由于某些原因,我得到以下错误:错误消息 我做错了什么? 注意:我还尝试了为KickButton键做key={Player"1"},以使其与相应的PlayerIcon唯一,但错误仍然
这是我在return语句中的代码: 我还尝试为