“数组中的每个孩子都应该有一个唯一的关键props”仅在第一次呈现页面时

IT技术 html reactjs coffeescript jsx
2021-05-15 17:22:57

我有<tr>一堆<td>里面包含所有通过 Instagram 登录的用户。<tr>提供一个独特的密钥,当我第一次加载页面,我警告每个孩子不具有唯一关键props。但是,当我离开该页面或删除帐户/通过 Instagram 重新登录以在表中列出帐户时,不再出现警告。为什么会发生这种情况?我 99% 确定该密钥也是唯一的,因为我通过控制台记录了它以检查每个<tr>密钥是否具有不同的密钥。

警告:数组中的每个孩子都应该有一个唯一的“key”props。使用 来检查 renderComponent 调用。

这是一个无赖,我无法追溯到控制台发出警告的地方......

示例代码:

component1 = React.createClass({
    render: () ->
        # A lot of table stuff here
        _.chain(@state.users).map((x) -> <component2 profile={x} />),@).value()
)}

component2 = React.createClass({
    render: () ->
        return (
            <tr key={@props.profile.id}
                <td>Blah</td>
                <td>Blah</td>
                <td>Blah</td>
            </tr>
        )
})
1个回答

你需要在你渲染的地方添加 key 属性<component2>,而不是你定义它的地方:

component1 = React.createClass({
    render: () ->
        # A lot of table stuff here
        _.chain(@state.users).map((x) -> <component2 profile={x} key={x.id} />),@).value()
)}

component2 = React.createClass({
    render: () ->
        return (
            <tr>
                <td>Blah</td>
                <td>Blah</td>
                <td>Blah</td>
            </tr>
        )
})