我很清楚在 React 中创建动态子项时需要添加prop的原因key
。令我感兴趣的是以下两段代码的行为
这children
仅使用Array#map 进行迭代
const App = () => {
return (
<Parent>
<span>Child 1</span>
<span>Child 2</span>
<span>Child 3</span>
</Parent>
);
};
const Parent = ({ children }) => {
return children.map(child => (
<div style={{ background: "lightblue" }}>{child}</div>
));
};
ReactDOM.render(<App />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.2.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.2.0/umd/react-dom.development.js"></script>
<div id="app">
这用于React.Children.map
做同样的事情
第一个片段产生警告
数组或迭代器中的每个孩子都应该有一个唯一的“key” prop
而第二个不产生任何。所以我的两个问题是:
- 是否
React.Children.map
为我们通过它的元素自动生成键? - 如果上述问题的答案是肯定的,那么它是否保证密钥在重新渲染时保持唯一和一致?一致我的意思是,重新排序的元素在通过它时将产生相同的键