类型 'unknown' 不可分配给类型 '(prevState: number | undefined) => number |不明确的'
Type 'unknown' is not assignable to type '(prevState: number | undefined) => number | undefined'
我正在使用 material ui 的 select 组件将 selected 值保存在变量中:
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'.
React 的 useState<number>()
returns 值元组,类型为:ratio: number | undefined
、setRatio: SeStateAction<number | undefined>
。当您尝试输入 setRatio
类型 unknown
的值时。
最简单的方法是 narrow 类型 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)
};
我正在使用 material ui 的 select 组件将 selected 值保存在变量中:
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'.
React 的 useState<number>()
returns 值元组,类型为:ratio: number | undefined
、setRatio: SeStateAction<number | undefined>
。当您尝试输入 setRatio
类型 unknown
的值时。
最简单的方法是 narrow 类型 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)
};