javascript - 类型 'unknown' 不可分配给类型 '(prevState: number | undefined) => number | 不明确的'
问题描述
我正在使用材质 ui 的选择组件将所选值保存在变量中:
const [ratio, setRatio] = useState<number>();
...
const handleChangeRatio = (e: React.ChangeEvent<{ name?: string | undefined; value: unknown; }>) => {
//const value = typeof e.target.value === "number" ? e.target.value : "";
setRatio(e.target.value);
};
...
<Select
labelId="demo-simple-select-filled-label"
id="demo-simple-select-filled"
value={splittingMethod}
onChange={(e)=>handleChangeRatio(e)}
>
<MenuItem value={0}>
0
</MenuItem>
<MenuItem value={0.1}>0.1</MenuItem>
<MenuItem value={0.2}>0.2</MenuItem>
</Select>
但是,在 handleChange 函数中设置状态时出现此错误,我该如何解决?
Argument of type 'unknown' is not assignable to parameter of type 'SetStateAction<number | undefined>'.
Type 'unknown' is not assignable to type '(prevState: number | undefined) => number | undefined'.
解决方案
ReactuseState<number>()
返回一个类型为: ratio: number | undefined
,的值的元组setRatio: SeStateAction<number | undefined>
。当您尝试提供setRatio
type 的值时unknown
。
最简单的方法是将类型缩小unknown
为number
:
const handleChangeRatio = (e: React.ChangeEvent<{ value: unknown }>) => {
if (typeof e.target.value === 'number') setRatio(e.target.value)
};
或具有更好的运行时安全性:
const handleChangeRatio = (e: React.ChangeEvent<{ value: unknown }>) => {
const value = Number(e.target.value)
if (!isNaN(value)) setRatio(value)
};
推荐阅读
- javascript - AJAX - 在 PHP 中刷新 DIV 包括每秒 - 不工作
- angular - 如何在没有自定义 webpack 配置的情况下进行条件导入?
- sql - Oracle - 以树格式查找所有外键依赖项的脚本?
- c++ - 主窗口在 Qt 中关闭时崩溃 - ProxyModel 标头返回语句
- java - 如何测试在 Springboot 中使用 Mapstruct 映射器的服务类方法?
- python - ValueError:检查输入时出错:预期dense_18_input的形状为(128,)但得到的数组形状为(1,)
- sql - 集合运算符的 PostgreSQL 实现
- c++ - 在 C++ 中,将函数与 std::optional 一起使用是否有意义
参数,表示可选参数? - react-native - 如何找出 React Navigation TopTabNavigator 中哪个选项卡处于活动状态
- c++ - 在C ++中连接两个字符串中用逗号分隔的唯一值