【发布时间】:2020-08-03 15:32:17
【问题描述】:
我收到了错误
“布尔类型的参数或未定义的参数不能分配给布尔类型的参数。未定义的类型不能分配给布尔类型”
当我将道具从孩子传递到如下的 usehook 时,
下面是我的代码,
function Parent() {
const [isDialogOpen, setDialogOpen] = React.useState(false);
return (
<Wrapper>
<DialogComponent isDialogOpen={isDialogOpen} setDailogOpen={setDialogOpen}/>
</Wrapper>
);
}
interface ChildComponentProps {
isDialogOpen: boolean,
setIsDialogOpen: any,
}
function ChildComponent ({isDialogOpen, setIsDialogOpen} : ChildComponentProps) {
const count= 10;
useSomehook(isDialogOpen, count); //error here
return (
<Wrapper>
<div>somedivs</div>
{isDialogOpen && <Overlay/>}
</Wrapper>
);
}
我在其他文件中定义了 useSomehook,如下所示,
export function useSomehook(enabled: boolean, count:number) {
React.useEffect(() => {
if (enabled) {
trigger(count);
}
}, [enabled, count, trigger]);
}
我是使用打字稿的新手。我不知道如何解决这个错误。有人可以帮我解决这个问题。谢谢。
【问题讨论】:
-
useSomehook(enabled: boolean | undefined, count:number)应该修复它 -
在
isDialogOpen中得到undefined的原因是使用React.useState(false)而不是React.useState<boolean>(false)。尝试显式定义泛型类型。
标签: reactjs typescript