这是我在React中的代码。
const [click, setClick] = useState(false);
const [like, setLike] = useState(dataObj.likedCount); // like === 4
const onClick = () => {
console.log(like);
console.log(click);
return setClick(!click) ? setLike(like - 1) : setLike(like + 1);
};
return (
<Like onClick={onClick}>{like}</Like>
)
我的麻烦是,“喜欢的数字”只是在增加,而不是在减少。即使布尔值在变化,从true到false。我在代码上找不到任何错误。...:((
一些注意点:
setClick(!click)
onClick()
,使用道具值(已选中)以使其受到完全控制const [click, setClick] = useState(false);
const [like, setLike] = useState(dataObj.likedCount); // like === 4
const onClick = () => {
click ? setLike(like - 1) : setLike(like + 1);
setClick(!click);
};
return (
<Like onClick={onClick} value={click}>{like}</Like>
)
您正在使用setClick
的返回值。 useState
中的setter函数没有记录的返回值。实验表明,它总是返回useState
。因此,您不能依赖undefined
的返回值。
如果您的目标是使用setClick
的值,请直接这样做:
!click
或
setClick(!click);
if (!click) {
setLike(like - 1);
} else {
setLike(like + 1);
}