【发布时间】:2021-10-07 06:49:21
【问题描述】:
我正在尝试在我的电子商务 react-js 网络应用中显示每个产品的评分值。我能够通过 JS 地图功能的索引跟踪/处理哪个产品已悬停。 ('onChangeActive' 是这个处理程序)
{products.map((product, index) => (
虽然,“onChange”总是为“index”函数参数发送 0,即使我从数组列表中单击任何产品的星号。结果,我无法提供明星功能
<Rating
name="hover-feedback"
value={this.state.rateValue[index] === undefined ?
product.rating_sum: this.state.rateValue[index]}
precision={0.5}
onChange={(event, newValue) => { // OnClick handler
this.setValue(newValue, index);
}}
onChangeActive={(event, newValue) => { // onHover handler
this.setHover(newValue, index);
}}
/>
{this.state.rateHover[index] !== undefined && <Box ml={2}>
{labels[this.state.rateHover[index] !== undefined ?
this.state.rateHover[index] : this.state.rateValue[index]]}</Box>}
设置值函数
setValue = (newValue, index) =>{
console.log("value", index, newValue)
if(newValue !== -1 && newValue!== null) {
let oldValue = this.state.rateValue;
oldValue[index] = newValue;
this.setState({
rateValue: oldValue,
})
}
}
【问题讨论】:
-
将您的代码粘贴为文本,而不是图像。包括定义索引的部分。
-
我已经发布了我在第一部分中声明“索引”的位置。此外,图像已替换为代码。
-
setValue是做什么的? -
'setValue' 和 'setHover' 都更新/设置每个产品的悬停/点击起始值的值。我将这些起始值保留为与产品直接对应的数组。像这样:product= [p0, p1, p2 .....] rateValue = [p0, p1, 2 .....] hoverValue = [p0, p1, p2 .... 无论如何,我得到了0 表示 onChange 期间的索引
标签: javascript arrays reactjs material-ui