javascript - 反应路由到端点但不呈现内容
问题描述
我可以路由到另一个端点,但组件内容仅在手动刷新时出现。
我在这里、这里看到过这个问题,并且我一直在查看reactrouter 文档等。解决方案似乎总是“添加withRouter
”或“确保您将其包裹在Router
.
这是代码:
应用程序.js
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
function App() {
return (
<Router>
<Provider store={store}>
<div className="App">
<NavBar />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/account" component={Account} />
</Switch>
</div>
</Provider>
</Router>
);
}
导航栏.js
import { BrowserRouter as Router, Link } from "react-router-dom";
import { withRouter } from "react-router";
function NavBar() {
return (
<Router>
<div className="navbar">
<h3>Connectory</h3>
<div className="buttons-container">
<Link>
<button>Settings</button>
</Link>
<Link to="/account"> // successfully redirects to /account, but doesn't render Account page content until refresh
<button>Account</button>
</Link>
</div>
</div>
</Router>
);
}
export default withRouter(NavBar);
编辑:评论建议后,这里是代码沙箱链接,这里是Account.js页面:
import React from "react";
export default function Account() {
return (
<div>
<h3>This is the Account page</h3>
</div>
);
}
解决方案
嗨,我在您的代码中发现了一个错误,这就是原因,因为它不起作用。
在这个组件中,您将路由器注入到应用程序的其余部分。
function App() {
return (
<Router>
<div className="App">
<NavBar />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/account" component={Account} />
</Switch>
</div>
</Router>
);
}
在这个你再次注入路由器。这就是为什么不起作用的原因,您只需从 de Navbar 中删除路由器,它就会正常工作。
function NavBar() {
return (
<Router>
<div className="navbar">
<h3>Connectory</h3>
<div className="buttons-container">
<Link>
<button>Settings</button>
</Link>
<Link to="/account">
<button>Account</button>
</Link>
</div>
</div>
</Router>
);
}
像这样
function NavBar() {
return (
<div className="navbar">
<h3>Connectory</h3>
<div className="buttons-container">
<Link>
<button>Settings</button>
</Link>
<Link to="/account">
<button>Account</button>
</Link>
</div>
</div>
);
}
推荐阅读
- regex - Bash 使用正则表达式将 API 调用的结果添加到日志文件
- c++ - 我找不到导致无限循环的错误
- powershell - 如何在 Azure 函数中运行 power shell 脚本
- sas - SAS Proc IML 模拟使用经验分布
- wordpress - Wordpress如何在帖子保存后更新自定义帖子类型中的ACF字段
- javascript - 如何在组件中抛出错误并在 ErrorHandler 中处理它?
- aws-lambda - 将 REST API URI 中的tenantId 与 JWT 令牌中的值进行比较的最佳方法
- android - 红色-绿色视觉缺陷的颜色功能在 Android Studio 北极狐中不起作用?
- c++ - 参数包的类型和积分的关键字
- bash - 命令在 CLI 中有效,但在 bash 中无效