reactjs - 添加事件时,我的 React-Redux 项目输出错误
问题描述
我的 React/Redux 项目中有以下无状态函数:
const ListItem = props => {
return (
<li className={props.item.expand ? 'expanded' : ''}>
<img src={`https://someUrl`+props.item.image}
alt="Illustration"
//onLoad={props.showImage.bind({}, props.item.id)}
className={props.item.showIllustration ? 'show' : ''}/>
<h3 className="title">{props.item.title}</h3>
<p className="date">
{moment(props.item.date, "YYYY-MM-DD").format('DD/MM/YY')}
</p>
<h3 className="amount">{props.item.amount}</h3>
<button onClick={props.showItem.bind({}, props.item.id)}>
{props.item.show ? 'Close' : 'Info'}
</button>
{props.item.show ? <ItemDetails id={props.item.id} /> : ''}
</li>
)
}
它运作良好。但是...当我取消注释该//onLoad
行时,控制台输出以下错误:
Warning: Each child in an array or iterator should have a unique "key" prop.
如果已经在父组件上设置了它,我不明白为什么它会询问唯一键:
listItems.map(element => {
return (
<ListItem
key={element.id}
element={element}
/>
)
})
此外,错误仅显示在我取消注释事件行的位置。是什么导致了错误,我该如何解决?
解决方案
它需要key
在渲染项目的最顶层元素上具有属性,li
在这种情况下。原因是因为 ListItem 可能是父级,但它只是其渲染方法中实际 html 元素的语法占位符。
因此,您必须更改为以下内容:
<li key={props.id} className={props.item.expand ? 'expanded' : ''}>
推荐阅读
- vba - 复制粘贴下拉对象
- excel - 谷歌翻译通过 VBA 设置接受编码
- math - 如何根据法线确定 OpenGL 绕组?
- javascript - 如何为 JS Promise 解析添加时间限制(在超时时拒绝 Promise)?
- loopback4 - Loopback4 授权用户属性角色始终未定义
- javascript - 类型错误属性未定义,即使动作触发定义它
- javascript - Three.js 在函数内平滑地旋转对象
- office-js - 如何使用 OfficeJS 在 Excel 加载项中实现 MSAL.js
- r - R Shiny 随机生成的单选按钮选择
- c++ - 在命名管道中发送 std::stringstream