在反应中使用 array.map 动态创建时未呈现的组件
Components not rendered when created dynamically with array.map in react
我正在学习反应。我想在一个容器中创建 8 个相同的元素。
以下是我的代码
class Card extends React.Component{
render(){
return(
<div className="card">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. </p>
</div>
)
}
}
容器组件如下。
class Cardholder extends React.Component{
render(){
const cards = new Array(9).map((e,i)=> <Card key={i}/>);
return(
<div>
{cards}
</div>
);
}
}
export default Cardholder;
两个组件都在同一个文件中。不渲染组件。没有错误。浏览器控制台中显示的消息如下。
[Log] [HMR] Waiting for update signal from WDS...
[Info] [WDS] Hot Module Replacement enabled.
当我给数组作为
new Array(9).fill(<Card/>)
有效。但是存在“键”错误,因为没有为元素指定键值。
new Array(9) //produce 9 undefined
仅对已赋值的数组索引调用回调
new Array(9).fill(null).map((e,i)=> <Card key={i}/>);
对于空数组,它返回一个空数组而不是索引。我认为这是问题所在。
arr.map((e,i) => i)
所以你应该试试
var arr = new Array(9).fill(0)
然后就可以了。
因为空数组映射也返回空数组,所以没有渲染。
我正在学习反应。我想在一个容器中创建 8 个相同的元素。
以下是我的代码
class Card extends React.Component{
render(){
return(
<div className="card">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. </p>
</div>
)
}
}
容器组件如下。
class Cardholder extends React.Component{
render(){
const cards = new Array(9).map((e,i)=> <Card key={i}/>);
return(
<div>
{cards}
</div>
);
}
}
export default Cardholder;
两个组件都在同一个文件中。不渲染组件。没有错误。浏览器控制台中显示的消息如下。
[Log] [HMR] Waiting for update signal from WDS...
[Info] [WDS] Hot Module Replacement enabled.
当我给数组作为
new Array(9).fill(<Card/>)
有效。但是存在“键”错误,因为没有为元素指定键值。
new Array(9) //produce 9 undefined
仅对已赋值的数组索引调用回调
new Array(9).fill(null).map((e,i)=> <Card key={i}/>);
对于空数组,它返回一个空数组而不是索引。我认为这是问题所在。
arr.map((e,i) => i)
所以你应该试试
var arr = new Array(9).fill(0)
然后就可以了。
因为空数组映射也返回空数组,所以没有渲染。