使用 react-bootstrap 时出现“无效的钩子调用”错误

时间:2021-05-20 06:11:33

标签: javascript reactjs webpack redux react-bootstrap

当我用它运行应用程序时,有一个有问题的组件,我遇到一个错误:“无效的钩子调用。钩子只能在函数组件的主体内部调用......”。当我评论这个组件时,错误消失了。

组件:

import React from "react";
import { Modal } from "react-bootstrap";
import TypeCalculateModalList from "./type-calculate-modal-list";

export default function TypeCalculateModal(props) {
  return (
    <div>
      <Modal
        {...props}
        size="lg"
        aria-labelledby="contained-modal-title-vcenter"
        centered
      >
        <Modal.Header closeButton>
          <Modal.Title id="contained-modal-title-vcenter">
            Title
          </Modal.Title>
        </Modal.Header>
        <Modal.Body>
          <TypeCalculateModalList {...props} />
        </Modal.Body>
      </Modal>
    </div>
  );
}

父容器:

import React from "react";
import { useSelector } from 'react-redux';
import TypeCalculateModal from "./type-calculate-modal";

const TypeCalculateModalContainer = ({show, onHide}) => {
  const result = useSelector(state => state.table.result);
  const isErrorCalculateStatus = useSelector(state => state.table.error);
  const isLoadingCalculateStatus = useSelector(state => state.table.isLoading);

  return (
    <TypeCalculateModal
      show={show}
      onHide={onHide}
      result={ result }
      isLoading={ isLoadingCalculateStatus }
      error={ isErrorCalculateStatus }
    />
  );
}

export default TypeCalculateModalContainer;

标题:

import React, { useState } from "react";
import { useDispatch } from 'react-redux';
import { Link } from "react-router-dom";
import { PersonCircle } from "react-bootstrap-icons";
import ImportDataModal from "../modal/import-data-modal";
import TypeCalculateModalContainer from "../modal/type-calculate-modal-container";
import "./header.css";

export default function Header({ result, onEditTableMode }) {
  const dispatch = useDispatch();
  const [importDataModalShow, setImportDataModalShow] = useState(false);
  const [typeCalculateModalShow, setTypeCalculateModalShow] = useState(false);

  return (
    <div className="head-wrap">
      <div className="head-left">
        <div className="head-left__item">
          <button onClick={() => setTypeCalculateModalShow(true)}>Расчеты</button>
          <TypeCalculateModalContainer
            show={typeCalculateModalShow}
            onHide={() => setTypeCalculateModalShow(false)}
          />
        </div>
...

我运行“npm ls react”和“npm ls react-dom”,一切正常,只有一个react@17.0.2和一个react-dom@17.0.2

当我注释掉有问题的组件 TypeCalculateModal 时,应用程序启动时不会出现此错误,但除了路由器之外,该功能不起作用。

请帮忙,我该如何修复错误?

Package.json:

{
  "name": "frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@reduxjs/toolkit": "^1.5.1",
    "@testing-library/jest-dom": "^5.12.0",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "axios": "^0.21.1",
    "bootstrap": "^4.6.0",
    "json-loader": "^0.5.7",
    "leaflet": "^1.7.1",
    "lodash": "^4.17.21",
    "node-sass": "^4.14.1",
    "react": "^17.0.2",
    "react-bootstrap": "^1.6.0",
    "react-bootstrap-icons": "^1.5.0",
    "react-dom": "^17.0.2",
    "react-dropzone": "^11.3.2",
    "react-leaflet": "^3.0.0",
    "react-loader-spinner": "^4.0.0",
    "react-redux": "^7.2.4",
    "react-router-dom": "^5.2.0",
    "react-select": "^4.3.1",
    "react-toastify": "^7.0.4",
    "redux-logger": "^3.0.6",
    "uuid": "^8.3.2",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "webpack serve",
    "build": "webpack",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not op_mini all"
  ],
  "devDependencies": {
    "@babel/core": "^7.14.3",
    "@babel/plugin-proposal-class-properties": "^7.13.0",
    "@babel/preset-env": "^7.14.2",
    "@babel/preset-react": "^7.13.13",
    "babel-loader": "^8.2.2",
    "clean-webpack-plugin": "^4.0.0-alpha.0",
    "css-loader": "^5.2.4",
    "html-webpack-plugin": "^5.3.1",
    "mini-css-extract-plugin": "^1.6.0",
    "postcss": "^8.2.15",
    "postcss-loader": "^5.3.0",
    "postcss-preset-env": "^6.7.0",
    "sass-loader": "^11.1.1",
    "style-loader": "^2.0.0",
    "webpack": "^5.37.1",
    "webpack-cli": "^4.7.0",
    "webpack-dev-server": "^3.11.2"
  }
}

0 个答案:

没有答案