【问题标题】:getting error : Argument of type '() => () => boolean' is not assignable to parameter of type 'EffectCallback'出现错误:'() => () => boolean' 类型的参数不可分配给'EffectCallback' 类型的参数
【发布时间】:2020-07-08 11:40:14
【问题描述】:
我是打字稿的新手,当我尝试在打字稿中使用useEffect 进行反应时出现错误,Argument of type '() => () => boolean' is not assignable to parameter of type 'EffectCallback'.,谁能帮助我为什么会出现这个错误?在这里我把我的代码,任何帮助将不胜感激,
const useIsMounted = () => {
const isMounted = React.useRef(false);
React.useEffect(() => {
isMounted.current = true;
return () => isMounted.current = false;
}, []);
return isMounted;
};
【问题讨论】:
标签:
javascript
reactjs
typescript
【解决方案1】:
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;
};