【发布时间】:2020-05-18 20:08:38
【问题描述】:
我有一个简单的字体真棒星评级。只有被点击的星星应该变成橙色,其余的不应该。橙色星的类别取决于状态。代码如下
import React, {useState} from 'react';
import './rating.css';
function Rating() {
const [state, setState] = useState({first:false, second:false, third:false, fourth:false,
fifth:false});
const rate = (index) => {
console.log(index)
return{
'1': setState(prevState=>({...prevState, first: !state.first })),
'2': setState(prevState=>({...prevState, second: !state.second })),
'3': setState(prevState=>({...prevState, third: !state.third })),
'4': setState(prevState=>({...prevState, fourth: !state.fourth })),
'5': setState(prevState=>({...prevState, fifth: !state.fifth }))
}[index]
};
return (
<div className="rating">
<span className={`fa fa-star ${state.first ? "checked" : ""}`} onClick={()=>rate('1')}></span>
<span className={`fa fa-star ${state.second ? "checked" : ""}`} onClick={()=>rate('2')}></span>
<span className={`fa fa-star ${state.third ? "checked" : ""}`} onClick={()=>rate('3')}></span>
<span className={`fa fa-star ${state.fourth ? "checked" : ""}`} onClick={()=>rate('4')}></span>
<span className={`fa fa-star ${state.fifth ? "checked" : ""}`} onClick={()=>rate('5')}></span>
</div>
)
}
export default Rating;
问题是当我点击一颗星星时,所有星星都会变黄。预计速率函数中的索引将决定切换哪个星的状态。控制台记录...索引在速率函数中正确。我试过没有 prevState/callback 和下面的匿名函数。没有任何帮助。 这里出了什么问题?
'1': ()=>setState(prevState=>({...prevState, first: !state.first }))
【问题讨论】:
标签: javascript reactjs react-hooks