javascript - React-Router:每次命中嵌套路由时都会重新渲染私有路由
问题描述
我有 2 个反应路由器;有 2 条路由的主路由器,/login
这/
是一条受保护的路由;第二个路由器包含/
. 受保护的路由会呈现一个Layout组件,其中包含 header、sidemenu、footer 和 main 组件,而Main组件包含我的子路由。
//App
<Router>
<Switch>
<Route exact path="/login" component={Login} />
<ProtectedRoute path="/" component={Layout} />
</Switch>
</Router>
//Layout
<div className={classes.layout}>
<Header />
<div className={classes.content}>
<SideMenu />
<Main />
<Footer />
</div>
</div>
//Main
<Router>
<Switch>
<Route exact path="/" component={...} />
<Route exact path="/dashboard" component={...} />
<Route exact path="/another" component={...} />
</Switch>
</Router>
起初我以为每次点击子路由时,只有Main组件会重新渲染,直到我戳了一下 Profiler DevTool,它显示整个Layout组件都重新渲染了。我尝试将布局页面设置为 a ,它确实为我节省了几毫秒,但有没有办法在每次我转到子路线时React.memo
绕过重新渲染布局组件?
解决方案
推荐阅读
- java - 私有仓库与本机模块不兼容
- javascript - fileReadSync 不是函数
- java - #Discord JDA #clear/purge 命令,为什么我的清除先前消息的代码无法按预期工作?
- sql - Microsoft SQL Server Management Studio -> 列名无效
- javascript - 加载 useEffect 函数时的依赖关系
- python-3.x - 我真的需要学习编写 Rel xpath 或 Rel css 选择器来使用 Scrapy 吗?
- django - 像帖子按钮django
- mysql-workbench - MySQL Workbench 模型 - 在模型表面板中隐藏 SQL 查询
- python - 使用opencv检测和测量筛子中的方形孔
- git - 有人在 M1 CPU Mac 上成功运行 git-svn 吗?