【发布时间】:2018-11-15 07:11:30
【问题描述】:
我正在学习 React.js。我正在使用 React 路由器版本 4.3.1 和 React 路由器 dom 4.3.1。
我当前的应用结构如下所示。
<React.Fragment>
{/* sidebar component */}
<SideBar store = {Mystore} />
<div className="main-panel">
{/* navbar component */}
<NavBar store = {Mystore}/>
{/* content component */}
<Content store = {Mystore}/>
{/* footer component */}
</div>
</React.Fragment>
在我的内容组件中,我设置了一个路由器,如下所示。
<BrowserRouter>
<React.Fragment>
<Route exact path="/phoenix/public" component={Login} />
<ProtectedRoute exact path="/phoenix/public/sample" component={SamplePage} />
<ProtectedRoute exact path="/phoenix/public/view_ticket" component={ViewTicket} />
<ProtectedRoute exact path="/phoenix/public/create_ticket" component={CreateTicket} />
<ProtectedRoute exact path="/phoenix/public/dashboard" component={Dashborad} />
</React.Fragment>
</BrowserRouter>
这里的ProtectedRoute是一个功能组件,它检查用户是否被认证并返回一个Route
我的侧边栏有一些 a 标签,如下所示。
<li>
<a href="dashboard">
<i className="ti-panel" />
<p>Dashboard</p>
</a>
</li>
我的目标是导航到不同的路线,而无需从侧边栏点击页面刷新。但是点击 href 会重新加载页面,并且我在 Mobx 中的所有状态都会刷新。我尝试 Redirect 但无法获得兄弟组件中所述的路由器(内容是侧边栏的兄弟)。我不知道如何实现这一目标。
【问题讨论】:
-
您是否尝试过使用Link?
-
你试过 navigationOption 道具吗?
-
我尝试使用链接,但我想它需要一个路由器,但我的侧边栏组件没有路由器。如果我的路由器是在内容中设置的,我如何在侧边栏组件中使用链接?
标签: reactjs react-router-v4 react-router-dom