已连接路由器 - 新路由的页面包含附加数据

Posted

技术标签:

【中文标题】已连接路由器 - 新路由的页面包含附加数据【英文标题】:Connected Router - newly routed page contains additional data 【发布时间】:2020-10-13 11:38:49 【问题描述】:

我有以下 index.jsx 的文件结构,其中 AppContainer 组件由 Header、props.children 和 footer 组成。 AppContainer 是 Connected Router 组件的子组件。在新页面上打开的路由中定义了一个组件 BookReader。我只想加载该组件的数据,而不是连同它一起加载页眉和页脚。

index.js

<Provider>
  <ConnectedRouter history=history>
   <AppContainer>
     <Switch>
       <Route exact path="/" component=Home/>
       <Route A/>
       <Route B/>
       <Route C/>
       <Route path="/read" component=BookReader/> // component that opens in a new page
       <Route path="*" component=ErrorPage/>
     </Switch>
   </AppContainer>
 </ConnectedRouter>
</Provider>

AppConatiner.jsx

class AppContainer extends Component () 
 render()
   return(
    <div>
     <Header/>
     props.children
     <Footer/>
    </div>
   )
  

有没有办法单独定义 BookReader 的路由,这样 BookReader 应该只加载对应的数据而不是附加数据?

【问题讨论】:

【参考方案1】:

选项 1

AppContainer 移动到 switch 内部并有一个简单的嵌套路由。

Working demo(选项 1)

<Provider>
  <ConnectedRouter history=history>
    <Switch>
      <Route path="/read" component=BookReader />
      <Route path="/">
        <AppContainer>
          <Route A />
          <Route B />
          <Route C />
        </AppContainer>
      </Route>
    </Switch>
  </ConnectedRouter>
</Provider>

选项 2

AppContainer 渲染为路由。在AppContainer 里面做所有的路线。

     <Router history=history>
        <Switch>
          <Route path="/read" component=BookReader />
          <Route path="/" component=AppContainer />
        </Switch>
      </Router>

【讨论】:

试过了会报错路由器应该只有一个子元素,如果我把它放在一个div中并使用它,由页眉和页脚组成的子元素都会一起加载 是的,它可以工作,但是有两条路线我未能更新,在问题中更新了它,当这些路线特别是 path="*" 时,错误组件也会被加载应用容器加载。 在 AppContainer 中使用了另一个 Switch 块,并且可以正常工作 希望它是正确的 - &lt;Switch&gt; &lt;Route path="/read" component=BookReader/&gt; &lt;AppContainer&gt; &lt;Switch&gt; &lt;Route exact path="/" component=Home/&gt; &lt;Route A/&gt; &lt;Route B/&gt; &lt;Route C/&gt; &lt;Route path="*" component=ErrorPage/&gt; &lt;/Switch&gt; &lt;/AppContainer&gt; &lt;/Switch&gt; 太棒了...很高兴听到这个消息...如果答案有帮助,请考虑投票并接受答案..

以上是关于已连接路由器 - 新路由的页面包含附加数据的主要内容,如果未能解决你的问题,请参考以下文章

手机wifi已连接但无法访问互联网怎么回事?

登陆路由器时,显示401错误的红色页面,这个怎么解决,而却之前路由器只要关掉以后就无法再次连接网络

本地连接已连接上,但数据包异常,多是发送多接收少,无法上网,求解??

华硕ac68u已连接但无法上网?

Angular 2新表单,提交重定向到同一页面,表单字段附加在URL中作为查询参数,新路由器版本

网页可能暂时无法连接,或者它已永久性地移动到了新网址