【发布时间】:2022-10-15 00:00:35
【问题描述】:
我正在使用最新版本的react@18.2.0、react-dom@18.0.6、react-router-dom@^6.4.2。
我使用BrowserRouter、Routes 和Route 创建了这个应用程序,用于在组件之间进行路由,但它不起作用,我得到了空白页。
我也收到诸如“无效使用钩子/用户引用”之类的错误。我不知道我在哪里做错了。
电子邮件.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部分中的原始锚标记 (<a>)。锚标记将重新加载页面。
标签: reactjs react-router react-router-dom react-dom