reactjs - url 正在更改,但组件未正确呈现?
问题描述
我有一个问题,我正在使用反应路由器,我会解释情况。
我有一个要登录的表单,在 url 中带有 /authenticate,如果身份验证成功,我会转到“/”(主页),现在做得很好,我有两个导航栏,一个在左侧,另一个在顶部,现在当我单击链接时,url 会更改,但单击它们时不会呈现组件,但是如果我在浏览器上点击 url 并单击 enter(页面刷新),则组件会正确呈现。
这是我的代码:
这是成功登录后呈现的组件,它是我的主要应用程序,所以 MenuGauche 和 MenuTop 总是呈现:
import React, { Fragment } from "react";
import { BrowserRouter, Switch, Route } from "react-router-dom";
import MenuGauche from "./MenuGauche";
import MenuTop from "./MenuTop";
import Acceuil from "./Acceuil";
import Roles from "./Roles";
const Application = () => {
return (
<Fragment>
<MenuGauche></MenuGauche>
<MenuTop></MenuTop>
<BrowserRouter>
<Switch>
<Route path="/" component={Acceuil}></Route>
<Route path="/roles" component={Roles}></Route>
</Switch>
</BrowserRouter>
</Fragment>
);
};
export default Application;
这是我的顶级路由组件(react 建议的默认组件):
function App(props) {
return (
<ThemeProvider theme={theme}>
<I18nProvider locale={props.language.language}>
<BrowserRouter>
<Switch>
<Route exact path="/" component={Application}></Route>
<Route path="/authenticate" component={Authentification}></Route>
</Switch>
</BrowserRouter>
</I18nProvider>
</ThemeProvider>
);
}
为什么这不起作用?我想得到任何帮助来解决这个问题,一个解决方案或一个提议!
提供了一种解决方案,它必须将 BrowserRouter 仅保留在顶部根组件中,但仍然没有!
这是修改:
import React, { Fragment } from "react";
import { BrowserRouter, Switch, Route } from "react-router-dom";
import MenuGauche from "./MenuGauche";
import MenuTop from "./MenuTop";
import Acceuil from "./Acceuil";
import Roles from "./Roles";
const Application = () => {
return (
<Fragment>
<MenuGauche></MenuGauche>
<MenuTop></MenuTop>
<Route path="/" component={Acceuil}></Route>
<Route path="/roles" component={Roles}></Route>
</Fragment>
);
};
export default Application;
如果您觉得我需要提供更多代码,请提出要求。
解决方案
问题是您正在使用两个BrowserRouter
组件,请确保使用一次并且它在整个应用程序的大多数顶级组件中
推荐阅读
- java - Java:错误:在调用超类型构造函数之前无法引用 this
- ansible - Ansible:在虚拟环境中的目标主机上运行模块
- cypress - 赛普拉斯上传文件给出错误无法在“窗口”上执行“atob”
- powerbi - Power BI - 将字段名称合并为一个
- sql - SQL Contains() 未返回“The”的结果
- r - R - 更改图例标签
- scala - 如何使用 Scala 2.11.8 在 Spark REPL 中启用部分统一?
- sql - 语法错误:GROUP BY 子句不能包含聚合或窗口函数
- typescript - 确保接口的类型 T 是实现它的类
- react-native - React Native - 为 useSelector 设置一个简单的变量