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

React Hooks布尔类型state未正确设置 宝可梦20问游戏BUG排查

问题1:进化提问的渲染判断逻辑错误

你当前的渲染判断条件是:

{type && weakness && !evolve && (
  // 进化提问DOM
)}

你用!evolve作为展示判断的条件,evolve初始值为null,!null的结果为true,此时可以正常展示提问。但当用户点击「否」给evolve赋值为false时,!false的结果仍然是true,会导致进化提问重复触发渲染,同时伴随宝可梦数组的重复过滤逻辑,最终导致页面卡住。
正确的判断逻辑应该是仅当evolve还未被赋值(也就是保持初始的null状态)时才展示提问,修改如下即可:

{type && weakness && evolve === null && (
   <div>
      <strong>你所选的宝可梦可以进化吗?</strong>
      <EvolveBtn mapEvolutions={mapEvolutions} onClick={evolveAssign} />
   </div>
)}

问题2:evolve的打印方式有误

你看到打印结果evolve = 为空,不是evolve没有被赋值,是因为JSX渲染时会忽略布尔值false的直接输出,你如果要确认state值,可以把值转成字符串再打印:

<p>evolve = {String(evolve)}</p>

修改后你就能看到点击「否」后evolve的值为false,不存在布尔类型state的特殊问题,是JSX的渲染特性导致你误以为state未赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:45:07