我已经添加了一个新的用户CARD,上面有一个加号。我已经制作了额外的卡片,在每张卡片上显示用户名。显示用户名的卡片使用.map()
方法显示。现在,如果我在.map()
函数中插入第1部分代码(见下文),则会显示多个添加新用户卡。我的最终目标是显示单个添加新用户卡,并使用.map()
显示剩余的卡片。
<div className="item-card add" onClick = {this.addUser} >
<img src={require("../../images/plus.svg")} className="plus-icon"/>
<div className="lbl">Add a new User</div>
</div>
如果我在.map()
内插入上面的代码,则会显示多个添加新用户卡。
我应该在displayUsers()
方法中插入第1部分代码?
displayUsers() {
return this.state.userList.map(user => {
return (
<div className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require('../../images/cancel.svg')} />
</div>
</div>
);
});
}
答案 0 :(得分:2)
您可以使用与地图渲染分开的添加用户卡。
在版本16.2.0
或更高版本中,您可以将多个元素包装在React.Fragment
displayUsers(){
return (
<React.Fragment>
<div className="item-card add" onClick = {this.addUser} >
<img src={require("../../images/plus.svg")} className="plus-icon"/>
<div className="lbl">Add a new User</div>
</div>
{this.state.userList.map( user => {
return(
<div className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
})}
</React.Fragment>
)
}
在v16.0.0 to 16.2.0
之间,您可以将它们作为数组返回
displayUsers(){
return ([
<div className="item-card add" onClick = {this.addUser} >
<img src={require("../../images/plus.svg")} className="plus-icon"/>
<div className="lbl">Add a new User</div>
</div>,
{this.state.userList.map( user => {
return(
<div className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
})}
]
)
}
在v16之前,你可以将它们包装在容器div中,因为你只能返回一个元素。
displayUsers(){
return (
<div>
<div className="item-card add" onClick = {this.addUser} >
<img src={require("../../images/plus.svg")} className="plus-icon"/>
<div className="lbl">Add a new User</div>
</div>
{this.state.userList.map( user => {
return(
<div className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
})}
</div>
)
}
答案 1 :(得分:1)
我认为render
会返回displayUsers
的结果。
三个答案:
div
)。key
。<React.Fragment>
而不是key
。{/ li>
displayUsers(){
return (
<div>
{this.state.userList.map( user => {
return(
<div className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
})}
</div>
);
}
key
s的数组:displayUsers(){
return this.state.userList.map(user => {
return(
<div key={user.???} className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
});
}
注意key={user.???}
,显然选择要使用的user
对象的唯一方面。
<React.Fragment>
displayUsers(){
return (
<React.Fragment>
{this.state.userList.map(user => {
return(
<div key={user.???} className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
});
</React.Fragment>
);
}
答案 2 :(得分:1)
试试这个:
displayUsers(){
return (
<React.Fragment>
<div className="item-card add" onClick = {this.addUser} >
<img src={require("../../images/plus.svg")} className="plus-icon"/>
<div className="lbl">Add a new User</div>
</div>
{
this.state.userList.map( user => {
return(
<div className="item-card">
<div className="info">
<div className="username">Username: {user.userName}</div>
</div>
<div className="del-wrap">
<img src={require("../../images/cancel.svg")}/>
</div>
</div>
);
})
}
</React.Fragment>
)}