带有持久抽屉的反应路线

React route with persistent drawer

假设我有一个带有以下组件和路由的 React 应用程序(带有 React Router 4):

NavButton 的行为应如下所示:

/admin/public 路线只是示例。还有更多,其中一些有 Sidenav,有些没有。

我的问题是:在此处管理 UI 状态并将所有组件和路由连接在一起的 React 方法是什么?感觉应该是 App 负责跟踪 sidenav 是否打开,所以它可以把那个信息传递给 Toolbar 和其他人,但又好像 App 不应该 负责管理其潜在 child 人中有或没有 Sidenav 的人。另外,当中间有 Route 时,道具如何从 App 传递给某些 child?

注意:我是 React 的新手,当然不熟悉上面的组件结构;这只是为了说明。

It feels like App should be responsible for keeping track of whether the sidenav is open

没错。子组件应始终是展示性 (pure/dumb) 组件。

App shouldn't be in charge of managing which of its potential children have or don't have Sidenav

我不会叫它 "in charge"。它只是保持应用程序的状态。用户负责,点击汉堡包按钮。

how can props get passed down from App to some child when there's a Route in between?

为什么不呢?您可以使用 render 而不是 component。例如:

let Parent = (props)=> {
 <Route 
   path="/pizza" 
   render={()=> <Pizza topping={props.topping} />}  />
}