快速提问。有人知道如何渲染组件数组吗?试图让开发人员更容易更改特定组件。 (它就像一个仪表板)。
组件列表文件
import React from 'react';
export default [
<ComponentOne/>
<ComponentTwo/>
];
仪表板组件
import React from 'react';
import components from './../../components';
export default class Dashboard extends React.Component
{
render = () => {
//Want to render the array of components here.
return (
<div className="tile is-parent">
{components}
</div>
);
};
}
问题是我有一系列组件需要添加密钥。然而!我似乎也无法为组件添加密钥,不确定如何真正解释它,所以这是我尝试过的代码:
{components.map((component, key) => (
<component key={key}/>
}
如果我执行上述操作,则不会出现“您必须应用密钥”错误,但是什么都没有呈现?我猜这是因为“组件”不存在或者沿着这些线有些奇怪。
我也试过 component.key = key;
但它显然不允许我在这种类型的对象上这样做?
我想我的后备是返回一个速记函数而不是一个数组,但出于某种原因我喜欢这个数组?对小学生来说似乎更简单。
原文由 bashleigh 发布,翻译遵循 CC BY-SA 4.0 许可协议
你考虑过使用新的 React Fragments 吗? (在 v16 中)
这将是最简单的解决方案,因为它会绕过整个数组/键问题。
如果您需要传递密钥,那么我建议您只要求组件具有密钥。这就是 React 的工作原理,所以我不建议您将这种行为隐藏在可能无法预测的界面后面。
如果您确实需要这样做,那么您可以使用
React.cloneElement
克隆元素并注入新属性: