【问题标题】: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】:

    useEffectEffectCallback 类型)的函数应该返回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;
    };
    

    【讨论】:

      猜你喜欢
      • 2021-08-05
      • 2021-10-18
      • 2021-11-23
      • 2021-01-31
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2018-11-25
      相关资源
      最近更新 更多