【发布时间】:2020-02-13 10:39:57
【问题描述】:
我为切换布尔值和值编写了自定义钩子:
import { useState } from 'react';
export function useToggle(initialValue: boolean) {
const [value, setValue] = useState<boolean>(initialValue);
const toggleValue = () => setValue(!value);
return [value, toggleValue];
}
然后我像下面这样使用它:
const [modalOpen, setModal] = useToggle(false);
但得到错误:
键入'布尔值| (() => void)' 不能分配给类型 'boolean | ((() => 无效) & 假) | ((() => void) & true)'。键入'() => void' 不能分配给类型 'boolean | ((() => 无效) & 假) | ((() => 无效)&真)'。 类型 '() => void' 不能分配给类型 '(() => void) & false'。 类型 '() => void' 不能分配给类型 'false'。
【问题讨论】:
-
我只是在做同样的事情。这是一篇很棒的文章fettblog.eu/typescript-react-typeing-custom-hooks 您需要将 [value, toggleValue] 作为 const 或添加返回类型到 useToggle 函数返回元组而不是数组
标签: reactjs typescript react-hooks