“无效的钩子调用。只能在函数组件的主体内部调用钩子”问题
Posted
技术标签:
【中文标题】“无效的钩子调用。只能在函数组件的主体内部调用钩子”问题【英文标题】:"Invalid hook call. Hooks can only be called inside of the body of a function component" problem 【发布时间】:2020-10-27 14:34:03 【问题描述】:我在控制台中遇到错误
错误!! [错误:无效的挂钩调用。钩子只能在里面调用 功能组件的主体。这可能发生在其中一个 原因如下:
您的 React 和渲染器版本可能不匹配(例如 React DOM) 您可能违反了 Hooks 规则 您可能在同一个应用中拥有多个 React 副本*
import firebase from '../../database/firebase';
import useDispatch from 'react-redux';
import * as actions from "../../store/actions";
export const userProfilePcture =(id)=>
const image = firebase.storage().ref(id + '/profilePicture');
var user = firebase.auth().currentUser;
image.getDownloadURL().then((url) =>
user.updateProfile(
photoURL: url
).then(() =>
console.log("updete succefully");
updeteUser();
).catch(error =>
console.log("error!!",error);
);
);
;
export const updeteUser=()=>
const dispatch=useDispatch();
var user = firebase.auth().currentUser;
dispatch(actions.updateUser(user));
我怎样才能避免这种情况?
【问题讨论】:
这能回答你的问题吗? Invalid hook call. Hooks can only be called inside of the body of a function component 在上面的帖子中,您可以找到有关挂钩的文档链接。你的组件应该是一个合适的功能组件(以大写字母开头)或者它应该以use
开头。
这能回答你的问题吗? React Hooks Error: Hooks can only be called inside the body of a function component
【参考方案1】:
这是你正在使用的钩子:
const dispatch=useDispatch();
你只能在 React 功能组件中使用钩子。现在你正试图在一个普通的 javascript 函数中使用这个钩子。
【讨论】:
以上是关于“无效的钩子调用。只能在函数组件的主体内部调用钩子”问题的主要内容,如果未能解决你的问题,请参考以下文章