【发布时间】:2022-01-05 20:54:52
【问题描述】:
我是 React 新手。我有一个我创建的评级组件。我遇到的问题是 onClick 我可以在控制台中看到评级正在更新,但在页面上我没有看到发生的变化。我的理解是 React 组件需要是纯函数,最好是函数式组件而不是类。当我尝试使用 useState 挂钩时,我的评分会添加到之前的状态,并且不会在页面上正确更新。
我的第一个问题是在组件中更新状态的最佳/首选方式是什么? 如果我使用的是功能组件,我是否必须使用钩子?
请看下面我的代码
export default function Rating(props) {
let stars = [];
// const [stars, setStars] = useState([]);
let star = '☆';
for (let i = 0; i < props.stars; i++) {
stars.push(star);
}
function rate(index) {
let filledStar = '★'
let stars = [];
// setStars([])
for (let i = 0; i < props.stars; i++) {
stars.push(star);
}
stars.forEach((star, i) => {
while (index >= 0) {
stars[index] = filledStar;
index--;
}
})
console.log('stars filled', stars)
return stars
}
return (
<>
<div className="stars">
{stars.map((star, i) => (
<h2
key={i}
onClick={() => rate(i)}>{star}
</h2>
))}
</div>
</>
)
}
如果我单击第四颗星,则会按预期返回,但 UI 不会更新。
【问题讨论】:
标签: javascript reactjs react-hooks jsx