【问题标题】:Invalid hook call. React.js无效的挂钩调用。反应.js
【发布时间】:2021-10-17 06:35:17
【问题描述】:

从 react 中导入 useState,粘贴到 body 函数中,但是 react 告诉我错误的使用钩子。 虽然另一个钩子是这样工作的。

import {getAuth} from 'firebase/auth';
import {useState} from 'react';

const useAuth = () => {

  const [state, setState] = useState(null); //wrong use

  const auth = getAuth();
  const getUserId = () => {
    return new Promise((resolve, reject) => {
      auth.onAuthStateChanged((user) => {
        if (user) {
          resolve(user.uid);
        } else {
          resolve(null);
        }
      });
    });
  };

  return {
    getUserId,
  };
};

export default useAuth;

【问题讨论】:

  • 您是否也尝试导入React
  • 是的,刚试过,它显示了同样的错误
  • 错误消息应该向您显示三个可能导致此类错误的示例,其中还包括一个选项,即同一项目中的两个不同反应库可能导致此错误。您的问题中没有足够的信息让我们为您提供帮助,但不妨遵循这些建议
  • 我的其他具有相同逻辑的钩子工作正常。

标签: javascript reactjs react-hooks


【解决方案1】:

您返回的 getUserId 不是 jsx。如果您的函数打算成为一个反应函数组件,那么它应该返回一个 jsx。如果没有,那么你不能使用像 useState 这样的反应钩子。

【讨论】:

  • 只是示例,我尝试使用其他名称
  • 可能是因为我在其他自定义挂钩中使用了我的自定义挂钩,我将 useAuth 导入到 useDatabase,这导致了有关挂钩的错误。现在我重新编写了代码,它对我有用
猜你喜欢
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 2020-12-02
  • 2020-08-13
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多