reactjs - 反应路由器不加载组件
问题描述
我对 React 比较陌生,我一生都无法弄清楚为什么这不起作用!
此代码不会在路由器内加载 App 组件,但它会在独立返回时加载。下面的例子
import React from "react";
import ReactDOM from "react-dom";
import App from "../components/App";
import { Router, Route } from "react-router-dom";
document.addEventListener("DOMContentLoaded", () => {
ReactDOM.render(
<Router>
<Route path="/">
<App />
</Route>
</Router>,
document.body.appendChild(document.createElement("div"))
);
});
屏幕上没有任何内容。但是,当我删除路由器时,我看到 App 组件加载:
import React from "react";
import ReactDOM from "react-dom";
import App from "../components/App";
import { Router, Route } from "react-router-dom";
document.addEventListener("DOMContentLoaded", () => {
ReactDOM.render(
<App />,
// <Router>
// <Route path="/">
// <App />
// </Route>
// </Router>,
document.body.appendChild(document.createElement("div"))
);
});
最后,这是我的 App 组件(虽然不认为你需要这个)
import React from "react";
const App = () => {
return <div>app has loaded</div>;
};
export default App;
这是基于 Ruby on Rails 应用程序构建的,如果这很重要的话
解决方案
如果您使用的是react-router-dom
v5:
import React from "react";
import ReactDOM from "react-dom";
import App from "../components/App";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
document.addEventListener("DOMContentLoaded", () => {
ReactDOM.render(
<Router>
<Switch>
<Route path="/">
<App />
</Route>
</Switch>
</Router>,
document.body.appendChild(document.createElement("div"))
);
});
如果您使用的是react-router-dom
v6
import React from "react";
import ReactDOM from "react-dom";
import App from "../components/App";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
document.addEventListener("DOMContentLoaded", () => {
ReactDOM.render(
<Router>
<Routes>
<Route path="/" element={<App />} />
</Routes>
</Router>,
document.body.appendChild(document.createElement("div"))
);
});
推荐阅读
- python - 使用 Pandas 对 DateTime 进行舍入
- python - python lxml:在数据库记录上应用 xslt
- c# - 为每个用户单独的任务管理器
- objective-c - 如何禁止我的应用程序参与 macOS 上的 ⌘+tab 循环?
- ruby-on-rails - 时间戳轨道的自定义验证
- symfony - 最佳实践 Symfony 翻译占位符命名文本与键
- r - 数据框修改 - R 中的降雨强度
- ios - 自动布局视觉格式语言
- c# - asp.net mvc 5 reader.read() 只获取第一行和最后一行
- haskell - 关于 Haskell 中的组合的困惑