reactjs - React router dom不适用于Link,但刷新页面会加载组件
问题描述
我有一个带有几条路线的 create-react-app。时不时地,当我更改分支等时,我注意到路由不起作用。我认为它唯一一次工作是因为缓存。
下面是我的路线,为了简单起见,我blog
用一个简单的p
标签替换了路线,因为我开始认为它与我链接到的组件有关。
应用程序.tsx
const history = createBrowserHistory();
...
<Router history={history} data-test="component-app">
<Switch>
<Route exact path="/" component={Main} />
<Route path="/blog">
<p>test</p>
</Route>
</Switch
</Router>
主要.tsx
import React from "react";
import { Link } from "react-router-dom";
export const Main = () => {
return (
<Link to="/blog">Blog</Link>
)
}
这是发生的事情:
- 单击 Main 中的博客链接 = 浏览器中的路由更改为 localhost:9600/blog 但没有内容,只有一个白页
- 在 localhost:9600/blog 上刷新页面,您将获得该
<p>test</p>
部分
但是为什么单击链接后它不显示测试?
我正在使用的版本:
- 反应路由器 dom:“^5.2.0”
- 反应脚本:“4.0.1”
- 反应:“^17.0.1”
- 历史:“^5.0.0”
有任何想法吗?
解决方案
为了让 React-Router-Dom 工作得很好,请确保您的整个应用程序都使用 BrowserRouter 包装,这在您的indexJS 中是最好的,如下所示,indexJS 文件的示例
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import { BrowserRouter } from "react-router-dom";
import reportWebVitals from "./reportWebVitals";
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
reportWebVitals();
推荐阅读
- java - Ghost4J 提取 pdf
- java - Accesor 方法未从 mutator 方法接收 var
- ios - SwiftUI - 状态栏文本下方的列表滚动
- .net - 当前不会命中断点。在 dll 文件中找到文件的副本(visual studio community 2019)
- c++ - OpenCV:未解析的外部符号
- python - 比较布尔值的两个数据框列
- python - 为什么我会看到这样损坏的包名称,我该如何修复它?
- python - 如何自定义 QCalendarWidget?
- php - 我应该使用truthy 方法而不是is_null、isset 还是empty?
- mysql - 主/外键;使用子查询连接多个表