javascript - Reactjs映射函数如何为数组中的每个项目显示不同的值
问题描述
我正在尝试使用 map 函数来显示数组中的每个项目,并且还有一个使用 Material UI 的星级评分系统,用户可以在其中单击其中一颗星。但是,当用户单击特定项目的评分时,数组中的所有其他项目也会更改为该值 - 如果有意义的话,我希望每个项目都是唯一的。这是代码(我在反应中使用类组件)。
<List>
{this.state.quizzes.map((item) => {
return (
<ListItem button key={`${this.topic}-${item.quiz_title}`}>
<div className="rating" onClick={(e) => e.stopPropagation()}>
<Rating
name="hover-feedback"
value={this.state.value}
precision={1}
max={3}
onChange={(e, newValue) => {
this.setValue(newValue)
}}
onChangeActive={(e, newHover) => {
this.setHover(newHover)
}}
/>
{this.state.value !== null && (
<Box ml={2}>
{
this.labels[
this.state.hover !== -1 ? this.state.hover : this.state.value
]
}
</Box>
)}
</div>
</ListItem>
)
})}
</List>
我怎样才能做到这一点,以便用户选择的值也不会改变其他项目的值?数组中会有很多项目,所以我不想为每个项目创建一个变量。提前致谢 :)
解决方案
你可以这样做。
return (
{this.state.quizzes.map((item) => (
<List>
<ListItem button key={`${this.topic}-${item.quiz_title}`}>
<div className="rating" onClick={(e) => e.stopPropagation()}>
<Rating
name="hover-feedback"
value={this.state.value}
precision={1}
max={3}
onChange={(e, newValue) => {
this.setValue(newValue)
}}
onChangeActive={(e, newHover) => {
this.setHover(newHover)
}}
/>
{this.state.value !== null && (
<Box ml={2}>
{
this.labels[
this.state.hover !== -1 ? this.state.hover : this.state.value
]
}
</Box>
)}
</div>
</ListItem>
</List>
))}
)
推荐阅读
- sql-server - SQL Server 2014:如何在 csv 导出中包含标题和详细信息
- ruby - Ruby Sketchup - 旋转 3d 文本
- javafx - Javafx如何正确切换场景?
- python - 如何使用 Docker 清除 Django 的缓存?
- c# - 无法为 SSL/TLS 安全通道建立信任关系 - Windows Server 2012 R2
- django - 无法在 Django 中创建超级用户
- android - 如何从手机中完全删除 Room 主表(模式)
- java - SpringBoot 2.0 使用 http 和 https 但在 https-port 上将 http 重定向到 https
- mysql - 我应该使用 hasOne 还是 hasMany?
- json - GraphQL query for a single JSON object in Gatsby