javascript - 由子路由和在其之上渲染的页面驱动的react-router基础组件

标签 javascript reactjs react-router

我想要一个 HomeComponent,这是应用程序的主/主页 View 。 它包含一个map 和一个所选 map 标记的详细信息div。 map 和详细信息 div 中显示的项目应由路线驱动。

/cities 应显示城市 /houses 应显示房屋

在我看来,定义主视图显示内容的路由是主视图的子路由。

<Route component={HomeComponent}>
  <Route path="/cities" component=Overview scope="cities">
    <Route path=":id" component=Detail scope="cities"/>
  </Route>
  <Route path="/homes" component=Overview scope="homes">
    <Route path=":id" component=Detail scope="homes"/>
  </Route>
</Route>

scopeHomeComponent UI 的哪些部分以不同方式突出显示或呈现的指示器。它可能是从 location.pathName 中提取的,但如果路由路径发生变化,这就会中断。

因此,HomeComponent 需要访问其子路由组件 props.items 以了解要在 map 和 detail div 中呈现的内容?

此外,应该有在主视图顶部呈现的路由(使用页面转换)。主视图应该始终出现在 DOM 中,因为重新创建的成本很高。我应该在哪里放置这样的路线,以便可以使用 ReactCSSTransitionGroup 组件对进入/退出进行动画处理?

应用程序主视图应始终显示 homescities 并在其之上呈现任何其他路线。我是否需要一个中间组件作为 Home 路由的子组件来实现这一目标?

此类附加路线可能是:

<Route path="/about">
  <Route path="/info">
  <Route path="/contact">
</Route>

它们应该呈现在 HomeComponent 之上(绝对),并且可以是半透明的或具有进入或退出动画。

最佳答案

给你的 HomeComponent 一个带有作用域变量的路径怎么样?您需要监听 componentDidUpdate 或 componentWillReceiveProps 中范围的变化,以根据哪个范围处于事件状态来更新 HomeComponent。您可以通过 props 将范围传递给子组件。

如果您使用这种方法,可能不再需要概述(因为它可以在 HomeComponent 中呈现),但可能类似于:

<Route path="/:scope" component={HomeComponent}>
   <Route path="overview" component={Overview} />
   <Route path=":id" component={Detail} />
</Route>

如果您希望信息/联系页面的 URI 为根级别,但仍呈现在 HomeComponent 之上,则可以使用绝对路径 ( react-router docs ),例如:

<Route path="/:scope" component={HomeComponent}>
   <Route path="overview" component={Overview} />
   <Route path=":id" component={Detail} />
   <Route path="about" component={About}> 
       <Route path="info" component={Info} />
       <Route path="contact" component={Contact} />
   </Route>
</Route>

关于javascript - 由子路由和在其之上渲染的页面驱动的react-router基础组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528734/

相关文章:

javascript - Ajax 字符串长度限制?

javascript - 从客户端到数据库保存和检索时间

javascript - react 选择值为 null

javascript - React.forwardRef 导致样式组件错误

javascript - React 不能正确重定向

javascript - 如何使用 React Router v4 将 Redux props 传递到不同路由中的单独组件?

javascript - 如何使用 React-Router 支持路由中的可选本地化字符串

javascript - 为多个 "placeholding elements"分配一个 ID

javascript - 如何选中/取消选中 react 中的复选框列表

javascript - float div - 可变高度和可变列 - 没有间隙