reactjs “此Express不可调用,类型”Boolean“没有调用签名”

xmd2e60i  于 2023-02-12  发布在  React
关注(0)|答案(4)|浏览(322)

我尝试使用typescript创建一个React组件,但是在控制台中出现了这个错误“这个表达式不可调用。类型'Boolean'没有调用签名。”
我的代码的沙盒链接:https://codesandbox.io/s/cranky-carson-16lpe?file=/src/App.tsx
错误似乎来自第17行的“setOpenPopup”属性。
不知道我能做些什么来纠正错误。将感谢任何帮助排除故障。谢谢!

mkshixfv

mkshixfv1#

您的接口错误。按照约定,setOpenPopup应该是一个接受布尔值并返回任何很可能为void的值的函数

interface PopupProps {
    openPopup: boolean;
    setOpenPopup: (open: boolean) => void;
}
f5emj3cl

f5emj3cl2#

prop的类型是一个布尔值,但是,在组件中它被作为函数调用。

setOpenPopup: (isOpen: boolean) => void; // signature of a function which accepts a boolean
tp5buhyn

tp5buhyn3#

我有这个错误,因为我做了一个愚蠢的错误,我使用setter方法作为一个常规方法。我的错误是:spot.setIsOccupied(occupiedValue);正确的方法是:spot.setIsOccupied = occupiedValue;

lp0sw83n

lp0sw83n4#

您可以使用应从react导入的DispatchSetStateAction

import { Dispatch, setStateAction } from 'react'

interface PopupProps {
    openPopup: boolean;
    setOpenPopup: Dispatch<SetStateAction<boolean>>;
}

相关问题