React:独一无二的"键“;道具
React: unique "key" prop
我收到了这个错误消息,尽管我的列表元素确实有一个键:(
js:18745警告:数组或迭代器中的每个子级都应该有一个唯一的"key"道具。检查Thread
的渲染方法。
这是我的代码:
render: function () {
var messages = this.state.messagesCache.map(message => {
return (message.own) ? (
<li className="row own" key={message.id}>
<p className="own message-body own-message-background small-5 medium-7 large-9 columns">
{message.body}
</p>
<p className="message-time small-2 large-1 columns">
{getTimePassed(message.timestamp)}
</p>
</li>
) : (
<li className="row foreign" key={message.id}>
<p className="foreign message-body foreign-message-background small-5 medium-7 large-9 columns">
{message.body}
</p>
<p className="message-time small-2 large-1 columns">
{getTimePassed(message.timestamp)}
</p>
</li>
)
})
return this.state.currentThread ? (
<div className="full-width">
<ul className="inline-list uiScrollableArea">
{messages}
</ul>
<form onSubmit={this.handleSubmit} className="row" action="">
<input className="small-12 columns" id={this.state.currentThread} autoComplete="off"
placeholder="input new message"/>
</form>
</div>
) : (
<div>
{"choose a thread to display"}
</div>
)
}
非常感谢您的帮助:)
你确定吗,message.id
总是唯一的。如果没有,
尝试:
var messages = this.state.messagesCache.map((message,index) => {
return (message.own) ? (
<li className="row own" key={index}>
<p className="own message-body own-message-background small-5 medium-7 large-9 columns">
{message.body}
</p>
<p className="message-time small-2 large-1 columns">
{getTimePassed(message.timestamp)}
</p>
</li>
) : (
<li className="row foreign" key={index}>
<p className="foreign message-body foreign-message-background small-5 medium-7 large-9 columns">
{message.body}
</p>
<p className="message-time small-2 large-1 columns">
{getTimePassed(message.timestamp)}
</p>
</li>
)
})
您的段落(p)也是重复项目。您也可以为段落添加关键字。这些键可以是固定的(例如,第一段为"body",第二段为"ts"或"timestamp")。
相关文章:
- React组件等待所需道具进行渲染
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- 为react组件传递道具的最佳方式
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- '图片'没有用于本机道具的propType'RCTImageView.overlayColor&
- React:独一无二的"键“;道具