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

React useState传入number类型Props时报TS2322:string不可分配给number类型

问题原因

哪怕你给输入框设置了type="number",HTML原生input元素的e.target.value返回值永远是字符串类型,你直接把字符串赋值给声明为number类型的strength、speed字段,就会触发这个类型错误,和Props的定义没有关系。

解决方法

在更新state的时候把输入值转为数字类型即可,最简单的方式是用Number()包裹输入值:

Strength:
<input
  type="number"
  value={strength}
  onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
    setCharacter({ ...character, strength: Number(e.target.value) })
  }
/>
Speed:
<input
  type="number"
  value={speed}
  onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
    setCharacter({ ...character, speed: Number(e.target.value) })
  }
/>

如果需要处理用户清空输入的场景,可以加兜底逻辑避免出现NaN:Number(e.target.value) || 0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 19:03:02