我使用React Router创建了标签,每个标签都有不同的路由。但是,我想通过保持隐藏的选项卡安装来保持选项卡转换之间的选项卡状态。我该如何实现这一目标?每次路由切换时,React路由器都会重新安装每个组件。
有人已经问过这个问题here,但还没有收到答案
理想情况下,我会找到一个解决方案,以便在第一次点击后保留未显示的标签
答案 0 :(得分:0)
我必须多做一些工作才能确认这确实有效,但通过React Router文档阅读this Route
组件。使用component
prop会在每次路径更改时重新组件。但是使用其他渲染方法,您可能能够实现您正在寻找的东西。我会选择render
,但children
也可以使用吗?
答案 1 :(得分:0)
这是 react-router-dom-v5 doc 在 render
、children
和 component
属性上推荐的路由方法<Route/>
。这样我们的组件就会在每次路径匹配时重新初始化和重新安装。
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/contact">
<Contact />
Route>
<Route path="/about">
<About />
</Route>
</Switch>
因为你(Kat)希望通过保持隐藏的标签被安装来保持标签转换之间的标签状态。
react-router-dom
的 pathname
在标签之间切换来实现此目的。const { pathname } = useLocation();
{pathname === "/"? <Home/>: null}
{pathname === "/contact"? <Contact/>: null}
{pathname === "/about"? <About/>: null}
CSS
的第二个解决方案演示:https://codesandbox.io/s/react-router-mouted-routes-32dxf?file=/src/App.js