gpt4 book ai didi

javascript - 为什么 BrowserRouter 和 Route from 'react-router-dom' 无法正常工作?

转载 作者:行者123 更新时间:2023-12-05 04:37:40 25 4
gpt4 key购买 nike

这些是名为 my-app 的项目目录的内容.

node_modules
package-lock.json
package.json
public
└── index.html
src
├── App.js
├── index.js
└── pages
└── Home.js

public/index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<!-- all the components are displayed in this #root element -->
<div id="root"></div>
</body>
</html>

src/App.js

import {BrowserRouter, Route, Link, Switch} from 'react-router-dom';
import ReactDOM from 'react-dom';
import Home from './pages/Home';

function App() {
return <>
<BrowserRouter>
<Route exact path="/" component={Home}></Route>
</BrowserRouter>
</>;
}
export default App;

src/index.js

import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
<App />,
document.getElementById("root")
);

src/pages/Home.js

function Home() {
return <h1>Homepage</h1>
}
export default Home;

当我运行 npm startmy-app目录,项目编译时显示以下消息:

Compiled successfully!

You can now view my-app in the browser.

Local: http://localhost:3000
On Your Network: http://<network_ip>:3000

Note that the development build is not optimized.
To create a production build, use npm run build.

asset static/js/bundle.js 1.49 MiB [emitted] (name: main) 1 related asset
asset index.html 334 bytes [emitted]
asset asset-manifest.json 190 bytes [emitted]
cached modules 1.39 MiB (javascript) 28.1 KiB (runtime) [cached] 109 modules
webpack 5.66.0 compiled successfully in 1509 ms

当我在网络浏览器上打开 http://localhost:3000 时,我得到一个空白页面,这意味着没有 JSX/HTML 呈现到位于 public/index.html 的 #root div 中。 .只有当我用 BrowserRouter 引入这些行时才会发生这种情况和 Router标签。其他人是否能够重现此错误?我不知道这有什么问题!

编辑:这是我正在使用的节点、npx 和 npm 的版本。

:~$ node -v
v16.13.2
:~$ npm -v
8.1.2
:~$ npx -v
8.1.2

最佳答案

react-router-dom v6,它公开的组件的一些 Prop 发生了变化,例如 Route , 和 SwitchRoutes 取代:

这里是你的代码修改以匹配新的变化:

function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />}></Route>
</Routes>
</BrowserRouter>
);
}
export default App;

此外,不需要 <> (又名 React.Fragment 因为 BrowserRouter 是 jsx 中唯一存在的项目。

关于javascript - 为什么 BrowserRouter 和 Route from 'react-router-dom' 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70695020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com