我的渲染函数中有一个 for 循环,它应该从 fontawesome 库中渲染 5 颗星,评级为 3 应该渲染 3 颗满星和 2 颗空星....
我遇到的问题是我的迭代器“i”对于所有这些都返回为 5。至少在我的 onClick 处理程序中。但真正奇怪的是,如果使用相同的迭代器变量“i”作为元素的 id 或任何其他自定义属性,它会显示正确的 1、2、3、4 或 5。为什么会发生这种情况?
import Component from "inferno-component";
import styles from "./styles";
export default class StarRating extends Component {
constructor() {
super();
this.state = {
rating: 3
};
}
rate = rating => {
console.log(rating);
this.setState({
rating: rating
});
};
render() {
var stars = [];
for (var i = 0; i < 5; i++) {
var klass = "fa fa-star";
if (this.state.rating <= i && this.state.rating != null) {
klass += "-o";
}
stars.push(
<i
style={styles.star}
className={klass}
id={i}
aria-hidden="true"
onClick={() => this.rate(i)}
/>
);
}
return <span>{stars}</span>;
}
}