【问题标题】:React Router V6 with { BrowserRouter, Routes, Route } routing not working, throws blank pageReact Router V6 with { BrowserRouter, Routes, Route } 路由不起作用,抛出空白页
【发布时间】:2022-10-15 00:00:35
【问题描述】:

我正在使用最新版本的react@18.2.0react-dom@18.0.6react-router-dom@^6.4.2

我使用BrowserRouterRoutesRoute 创建了这个应用程序,用于在组件之间进行路由,但它不起作用,我得到了空白页。

我也收到诸如“无效使用钩子/用户引用”之类的错误。我不知道我在哪里做错了。

电子邮件.tsx

import React from "react";

const EmailPage = () => {
  return (
    <div>
      <hr/>
      <h2>Email</h2>
      <hr/>
      <h3>abc@xyz.com</h3>
    </div>
  );
}

export default EmailPage;

联系方式.tsx

import React from "react";

const ContactPage = () => {
  return (
    <div>
      <hr/>
      <h2>Contact</h2>
      <hr/>
      <h3>BBSR, Odisha, India</h3>
    </div>
  );
}

export default ContactPage;

应用程序.tsx

import React from "react";

const App = () =>{   
  return(
    <div>
      <h1>Welcome Home</h1>
      <nav>
        <a href="/email">Email</a>
        <a href="/contact">Contact</a>
      </nav>
    </div>
  );
}

export default App;

索引.tsx

import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import App from './App';

import EmailPage from './route-components/Email';
import ContactPage from './route-components/Contact';

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);

root.render(
  <BrowserRouter>
    <Routes>
      <Route path="/" element={<App/>}/>
      <Route path="email" element={<EmailPage/>}/>
      <Route path="contact" element={<ContactPage/>}/>
    </Routes>
  </BrowserRouter>
);

包.json

{
  "name": "my-route-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.5.2",
    "@types/node": "^16.11.65",
    "@types/react": "^18.0.21",
    "@types/react-dom": "^18.0.6",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "typescript": "^4.8.4",
    "web-vitals": "^2.1.4",
    "react-router-dom": "^6.4.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

【问题讨论】:

  • 我没有看到您共享的代码有任何问题会导致空白页呈现。您需要从 RRD 导入和使用 Link 组件,而不是 nav 部分中的原始锚标记 (&lt;a&gt;)。锚标记将重新加载页面。

标签: reactjs react-router react-router-dom react-dom


【解决方案1】:

请删除此代码as HTMLElement 并检查此链接https://codesandbox.io/s/affectionate-monad-p1klrr?file=/src/index.js 它对我有用。

【讨论】:

  • 我使用了 TSX 文件,所以我在那里使用了 HTMLElement。我也尝试通过使用 JS 模板创建另一个 API 来不使用 HtmlElment,但它不起作用。给出相同的错误。警告:无效的挂钩调用。钩子只能在函数组件的主体内部调用。
  • 上述错误发生在 <BrowserRouter> 组件中:在 BrowserRouter (localhost:3000/static/js/bundle.js:42827:5) 考虑在树中添加错误边界以自​​定义错误处理行为。访问reactjs.org/link/error-boundaries 了解有关错误边界的更多信息。
【解决方案2】:

问题解决了:代码中的一切都是正确的。我按照以下步骤操作,它开始完全正常工作。 -> 在项目文件中命令:'npm audit fix --force'-> 然后命令:'npm cache clean --force'-> 然后重新启动 IDE 并执行 'npm start'

【讨论】:

    猜你喜欢
    • 2022-03-23
    • 2021-03-28
    • 2022-07-21
    • 2022-08-02
    • 1970-01-01
    • 2022-07-19
    • 2022-01-13
    • 2020-01-23
    • 2022-07-09
    相关资源
    最近更新 更多