javascript - 收到错误 : Argument of type '() => () => boolean' is not assignable to parameter of type 'EffectCallback'

标签 javascript reactjs typescript

我是 typescript 的新手,当我尝试使用 useEffect 时出现错误在 typescript 中 react ,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;
    };

最佳答案

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;
};

关于javascript - 收到错误 : Argument of type '() => () => boolean' is not assignable to parameter of type 'EffectCallback' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62794003/

相关文章:

javascript - Node-ACl 抛出未处理的拒绝错误

javascript - 复制从另一个表单输入的文件路径

javascript - Chrome 网络请求阻止不起作用

javascript - YUP 验证期间出错 "Cannot read property ' 长度'未定义”

javascript - 在 ReactJS 中向某个元素添加类

javascript - typescript 内的 Angular 4.3(点击)语法

javascript - 如何让 casperJS 等待 .change() 事件完成?

reactjs - 带有子文件夹的 typescript 项目中的 eslint 配置

javascript - VueJS 2 + typescript : computed value does not detect property defined by data

ruby-on-rails - Jest + React + Rails : how to create objects in database for testing?