收到错误:"Argument of type '() => () => boolean' is not assignable to parameter of type 'Effect



我是TypeScript的新手。当我尝试在React、中的TypeScript中使用useEffect时,我遇到了一个错误

类型为'((=>的参数;((=>boolean"不可分配给"EffectCallback"类型的参数。

为什么会出现此错误?

这是我的代码:

const useIsMounted = () => {
const isMounted = React.useRef(false);
React.useEffect(() => {
isMounted.current = true;
return () => isMounted.current = false;
}, []);
return isMounted;
};

useEffect(EffectCallback类型(的函数应返回void() => void | undefined

function useEffect(effect: EffectCallback, deps?: DependencyList): void;
type EffectCallback = () => (void | (() => void | undefined));

在您的情况下,您将返回void => boolean:

// void => boolean
return () => (isMounted.current = false);

要修复它,请在清洁功能的声明中添加作用域:

const useIsMounted = () => {
const isMounted = React.useRef(false);
React.useEffect(() => {
isMounted.current = true;
return () => {
isMounted.current = false;
};
}, []);
return isMounted;
};

相关内容

最新更新