收到与反应挂钩 useHistory 相关的错误

Posted

技术标签:

【中文标题】收到与反应挂钩 useHistory 相关的错误【英文标题】:getting an error related to react hook useHistory 【发布时间】:2021-02-03 07:20:56 【问题描述】:

我已经实现了 useHistory(),就像我在下面实现的一样,以前我没有收到任何错误,但是在这个组件中我收到了一个错误

第 6:18 行:在函数“showPost”中调用 React Hook “useHistory”,该函数既不是 React 函数组件也不是自定义 React Hook 函数 react-hooks/rules-of-hooks

import React from 'react';
import CloseIcon from '@material-ui/icons/Close';
import useHistory from 'react-router-dom';

const showPost = () =>
    let history = useHistory();

    const closeUpload = () =>
        history.goBack();
    

    return(
        <div className="overlay">
            <div className="overlay-container">
                <button className="close-btn" onClick = closeUpload><CloseIcon color="action"/></button>
                <h1>Hello</h1>
            </div>
        </div>
    );


export default showPost;

请帮我解决这个问题。 提前谢谢你。

【问题讨论】:

美好的一天。你使用的是什么版本的 React 和 React Router?您需要 React 16.8+ 和 React Router 5.1 到 6.0(useHistory() 在 5.1 之前或 6.0 之后不起作用)。 【参考方案1】:

你应该总是用大写字母来调用你的 React 组件。

统一更新: 来自https://reactjs.org/docs/components-and-props.html#rendering-a-component

注意:组件名称始终以大写字母开头。 React 将以小写字母开头的组件视为 DOM 标签。例如,表示一个 HTML div 标签,但表示一个组件,并且需要 Welcome 在范围内。

【讨论】:

【参考方案2】:

https://reactjs.org/docs/jsx-in-depth.html#html-tags-vs.-react-components

只需大写组件

const showPost 

const ShowPost 

做好事

export default showPost 

export default ShowPost 

【讨论】:

以上是关于收到与反应挂钩 useHistory 相关的错误的主要内容,如果未能解决你的问题,请参考以下文章

尽管控制台没有显示错误,但 useHistory 钩子不起作用

在回调函数中使用 setState 挂钩时反应过多的重新渲染

无效的挂钩调用。钩子只能在反应函数组件内部使用...... useEffect,redux

useHistory react-router-dom 无效的钩子调用

React Hooks:在验证时实例化状态挂钩错误:无效的挂钩调用。 Hooks 只能在函数组件的主体内部调用

如何使用反应表单挂钩验证反应日期选择器