You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.useState点击状态切换异常:点击No无法切换回Yes,求排查

问题分析与修复

错误点

在changeState函数的状态更新逻辑中,你使用了赋值运算符=而非比较运算符===,导致状态切换逻辑失效:

return prevValue = "Yes" ? "No" : "Yes"

这段代码里,prevValue = "Yes"是把字符串"Yes"赋值给prevValue,赋值表达式的结果永远是"Yes",所以三元运算符会一直返回"No"——第一次点击后状态变成"No",后续点击时这个赋值操作依然会把prevValue强制设为"Yes",然后返回"No",自然无法切回"Yes"。

修复后的代码

把赋值运算符改成严格比较运算符===即可:

import React from "react"

export default function App() {
    let [isGoingOut, setisGoingOut] = React.useState("Yes")
    function changeState(){
        setisGoingOut(prevValue => {
            return prevValue === "Yes" ? "No" : "Yes"
        })
    }
    
    return (
        <div className="state">
            <h1 className="state--title">Do I feel like going out tonight?</h1>
            <div className="state--value" onClick={changeState}>
                <h1>{isGoingOut}</h1>
            </div>
        </div>
    )
}

修复后,每次点击都会正确判断当前状态值,实现"Yes"和"No"的双向切换。

内容的提问来源于stack exchange,提问作者Adhil Bayya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:44:52