已连接的路由器 - 新路由的页面包含其他数据

Connected Router - newly routed page contains additional data

我有以下 index.jsx 的文件结构,其中 AppContainer 组件由页眉、props.children 和页脚组成。 AppContainer 是 Connected Router Component 的子组件。在新页面打开的路径中定义了一个组件 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

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>