Argument of type 'number' is not assignable to parameter of type 'SetStateAction'.ts(2345)
(property) slidePageIndex: number
你收到这个错误是因为你试图将一个number
赋值给一个状态变量,该状态变量的初始状态被设定为null
。在Typescript中,这种情况下,它会默认该状态始终为null
。
如果你希望这个状态变量可以接受null
或者number
类型的数据,你需要在使用useState
时明确指定。
以下是如何解决此问题:
import React, { useState } from 'react';
import clsx from 'clsx';
function MyComponent({ options, callback }) {
const [selectedValue, setSelectedValue] = useState<number | null>(null);
const handleClick = (value: number) => {
setSelectedValue(value);
callback(value);
};
return (
<div className="pagelist">
{options.map((option: any) => (
<div
key={option.value}
className={clsx({ active: selectedValue === option.value })}
onClick={() => handleClick(option.value)}
>
<img src={option.img} alt={option.alt} />
</div>
))}
</div>
);
}
export default MyComponent;
在这个例子中,我使用useState<number | null>
来表示状态selectedValue
可以接受number
或null
类型的数据。同时,handleClick
函数的参数现在也被指定为number
类型。