javascript - react : unique "key" prop

标签 javascript reactjs

我收到此错误消息,尽管我的列表元素确实有一个键 :(

react.js:18745 警告:数组或迭代器中的每个 child 都应该有一个唯一的“键” Prop 。检查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>
        )
    })

关于javascript - react : unique "key" prop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355440/

相关文章:

JavaScript 数学,循环内循环

javascript - 我正在尝试使用 javascript 打开一个弹出窗口。它适用于 Chrome 但不适用于 IE 或 Firefox

reactjs - 用于生产的 Preact 和 Webpack

reactjs - 子组件列表未渲染

javascript - 在 Google 折线图中将单个点设置为事件/显示点和工具提示

javascript - 图像在 IE8 中不渲染

javascript - 用于 "react-markdown"npm 库的 .md 文件导入的 Webpack 加载器?

javascript - 无法读取对象数组上 null 的三元运算符的属性

javascript - 我的源映射断点在 Google Chrome 中无法正常工作

javascript - 使用从头开始构建的 webpack 的 react 应用程序未在 css 中加载图像