将钩子传递给子typescript的问题

IT技术 javascript reactjs typescript ecmascript-6
2021-05-02 14:41:07

我有一个使用钩子的react组件。我的父组件如下所示:

const Parent = () => {

   const [isActive, setIsActive] = useState(false);

   return (
     <Child isActive={isActive} setIsActive={setIsActive} />
   );
}

这是子组件

type Props = {
   isActive: boolean;
   setIsActive: () => void;
}
const Child = ({ isActive, setIsActive}: Props) {
   // component
} 

我看到的错误是

类型错误:类型 'Dispatch < SetStateAction>' 不可分配给 > 类型 '() => void'。TS2322

1个回答

您的Props类型Child不正确。React 类型setIsActiveas Dispatch,其定义为:

type Dispatch<A> = (value: A) => void;

您缺少value类型中参数。这应该是正确的(另请注意,它必须是冒号而不是等号):

type Props = {
   isActive: boolean;
   setIsActive: (active: boolean) => void;
}
const Child = ({ isActive, setIsActive}: Props) {
   // rest of the component
}