仅在第一次渲染页面时“数组中的每个子项都应该有一个唯一的 key prop”

2023-11-30

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

警告:数组中的每个子元素都应该有一个唯一的“key”属性。使用 检查 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>
        )
})

您需要在渲染的位置添加关键属性<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>
        )
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅在第一次渲染页面时“数组中的每个子项都应该有一个唯一的 key prop” 的相关文章

随机推荐