react-router-dom@6 不浏览不显示页面
react-router-dom@6 does not browse and does not display pages
我开始了一个新项目,并决定使用 react-router-dom@6 在我的页面之间导航。
我做了安装和配置,但导航不工作,我找不到问题。
我需要在访问“/”时显示“主页”页面,在访问“/profile”时显示配置文件页面。
Name 目前 localhost:3000 只显示一个空白页面,如“/home”和“/profile”。
我没有发现问题。
Index.js
/* eslint-disable react/jsx-filename-extension */
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import './i18n';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root'),
);
reportWebVitals();
App.js
/* eslint-disable react/react-in-jsx-scope */
/* eslint-disable react/jsx-filename-extension */
import React from 'react';
import { BrowserRouter } from 'react-router-dom';
import Routes from './routes';
function App() {
return (
<BrowserRouter>
<Routes />
</BrowserRouter>
);
}
export default App;
routes.js
/* eslint-disable linebreak-style */
/* eslint-disable no-unused-vars */
/* eslint-disable linebreak-style */
/* eslint-disable react/react-in-jsx-scope */
/* eslint-disable react/jsx-filename-extension */
/* eslint-disable linebreak-style */
import React from 'react';
import {
Routes,
Route,
} from 'react-router-dom';
import Home from './pages/home';
import Profile from './pages/profile';
function MainRoutes() {
return (
<Routes>
<Route path="/" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</Routes>
);
}
export default MainRoutes;
Home.jsx
/* eslint-disable linebreak-style */
import { useTranslation } from 'react-i18next';
import React from 'react';
const { t } = useTranslation();
function Home() {
return (
<h1>
{t('home.title')}
;
</h1>
);
}
export default Home;
Profile.jsx
/* eslint-disable linebreak-style */
import { useTranslation } from 'react-i18next';
import React from 'react';
const { t } = useTranslation();
function Profile() {
return (
<h1>
{t('home.title')}
;
</h1>
);
}
export default Profile;
package.json
{
"name": "bruno-profile",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@testing-library/user-event": "^13.2.1",
"babel-eslint": "^10.1.0",
"i18next": "^21.6.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-i18next": "^11.15.3",
"react-router-dom": "^6.2.1",
"react-scripts": "5.0.0",
"web-vitals": "^2.1.0"
},
"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"
]
},
"devDependencies": {
"eslint": "^8.8.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-react": "^7.28.0",
"eslint-plugin-react-hooks": "^4.3.0"
}
}
您应该在 React 组件主体内调用 useTranslation() 挂钩,您必须在 Home.jsx 和 Profile.jsx.
两个版本中更改它
function Home() {
const { t } = useTranslation();
return <h1>{t("home.title")};</h1>;
}
我开始了一个新项目,并决定使用 react-router-dom@6 在我的页面之间导航。 我做了安装和配置,但导航不工作,我找不到问题。 我需要在访问“/”时显示“主页”页面,在访问“/profile”时显示配置文件页面。 Name 目前 localhost:3000 只显示一个空白页面,如“/home”和“/profile”。 我没有发现问题。
Index.js
/* eslint-disable react/jsx-filename-extension */
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import './i18n';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root'),
);
reportWebVitals();
App.js
/* eslint-disable react/react-in-jsx-scope */
/* eslint-disable react/jsx-filename-extension */
import React from 'react';
import { BrowserRouter } from 'react-router-dom';
import Routes from './routes';
function App() {
return (
<BrowserRouter>
<Routes />
</BrowserRouter>
);
}
export default App;
routes.js
/* eslint-disable linebreak-style */
/* eslint-disable no-unused-vars */
/* eslint-disable linebreak-style */
/* eslint-disable react/react-in-jsx-scope */
/* eslint-disable react/jsx-filename-extension */
/* eslint-disable linebreak-style */
import React from 'react';
import {
Routes,
Route,
} from 'react-router-dom';
import Home from './pages/home';
import Profile from './pages/profile';
function MainRoutes() {
return (
<Routes>
<Route path="/" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</Routes>
);
}
export default MainRoutes;
Home.jsx
/* eslint-disable linebreak-style */
import { useTranslation } from 'react-i18next';
import React from 'react';
const { t } = useTranslation();
function Home() {
return (
<h1>
{t('home.title')}
;
</h1>
);
}
export default Home;
Profile.jsx
/* eslint-disable linebreak-style */
import { useTranslation } from 'react-i18next';
import React from 'react';
const { t } = useTranslation();
function Profile() {
return (
<h1>
{t('home.title')}
;
</h1>
);
}
export default Profile;
package.json
{
"name": "bruno-profile",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@testing-library/user-event": "^13.2.1",
"babel-eslint": "^10.1.0",
"i18next": "^21.6.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-i18next": "^11.15.3",
"react-router-dom": "^6.2.1",
"react-scripts": "5.0.0",
"web-vitals": "^2.1.0"
},
"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"
]
},
"devDependencies": {
"eslint": "^8.8.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-react": "^7.28.0",
"eslint-plugin-react-hooks": "^4.3.0"
}
}
您应该在 React 组件主体内调用 useTranslation() 挂钩,您必须在 Home.jsx 和 Profile.jsx.
两个版本中更改它function Home() {
const { t } = useTranslation();
return <h1>{t("home.title")};</h1>;
}