玩笑测试-唯一的“关键”道具错误。检查xyz的渲染方法

时间:2019-06-03 14:01:59

标签: reactjs jestjs enzyme

我通过了一个开玩笑的测试,但是获得“数组或迭代器应该具有唯一的“键”道具”。错误

我发现这是由于未定义键属性但我正在测试的组件引起的。

            if (width) {
                arrayList = listings.map(function (listing, i) {
                    return <div className="col"><ListingSimple key={i} listing={listing} displayType={displayType} /></div>;
                });
            }
            else {
                arrayList = listings.map(function (listing, i) {
                    return <ListingSimple key={i} listing={listing} displayType={displayType} />;
                });
            }

在测试中,我通过了其余组件的所有必需道具。它只是给上面的console.error。 arrayList设置正确,我可以看到我的一个或多个列表,但我只是对该错误的阻止者。

只需尝试删除此 控制台错误...

  

警告:数组或迭代器中的每个子代均应具有唯一的“键”道具。检查...的渲染方法。有关更多信息,请参见fb react-warning-keys网站。

2 个答案:

答案 0 :(得分:0)

密钥必须位于要返回的最外层子节点上(在这种情况下为div)。

答案 1 :(得分:0)

考虑将密钥添加到包装div中,例如:

if (width) {
            arrayList = listings.map(function (listing, i) {
                return <div key={i} className="col"><ListingSimple key={i} listing={listing} displayType={displayType} /></div>;
            });
        }
        else {
            arrayList = listings.map(function (listing, i) {
                return <ListingSimple key={i} listing={listing} displayType={displayType} />;
            });
        }