javascript - react 路由器与嵌套的 child ?

标签 javascript reactjs react-router

查看 huge-apps react-router github 上的示例,我不确定如何设置我想要的路由。

URL        | Result
--------------------------
/sites     | List of sites
/sites/:id | One site

如果我想列出多个站点,站点组件/路由需要嵌套在站点组件/路由中。因此,我的文件夹结构看起来类似于 react-router 示例中的 Assignments 模型。

/routes
    /Sites
        /components
        |   Sites.js
        /routes
        |   /Site
        |   |   /components
        |   |   |   Site.js
        |   |   index.js
        index.js

但是,对于 /sites/:id 路由,它不依赖于 Sites 组件。我会在 Sites 目录的同一级别创建另一个 Site 目录,还是让 Site 组件能够呈现列表和单一 View ?我的 index.js 文件会是什么样子?

最佳答案

我会这样想象你的路线树:

/sites
(Sites.js)
- /:id1
  (Site1.js)
- /:id2
  (Site2.js)

在您的 index.js 中,类似这样的内容(使用客户端示例):

render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <IndexRoute component={Home} />
      <Route path="/sites" component={Sites}>
        <Route path="/sites/:id" component={Site}/>
      </Route>
    </Route>
  </Router>
), document.getElementById('app'));

每条路线都有一个伴随的组件。您可以在这些组件中放入任何您想要的东西,尽管包含一些导航到子路由的方法可能会有所帮助。

PlainRoute 版本(虽然我不确定你为什么想要):

const rootRoute = {
  component: 'div',
  childRoutes: [{
    path: '/',
    component: require('./components/App'),
    childRoutes: [ require('./routes/Sites') ]
  }]
}

render(
  <Router history={browserHistory} routes={rootRoute} />,
  document.getElementById('example')
);

'./routes/Sites':

module.exports = {
  path: 'sites',
  getChildRoutes(location, cb) {
    require.ensure([], (require) => cb(null, [ require('./routes/Site') ]))
  },
  getComponent(nextState, cb) {
    require.ensure([], (require) => cb(null, require('./components/Sites')))
  }
}

'./routes/Site':

module.exports = {
  path: 'sites/:id',
  getComponent(nextState, cb) {
    require.ensure([], (require) => cb(null, require('./components/Site')))
  }
}

关于javascript - react 路由器与嵌套的 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36724204/

相关文章:

javascript - 在组件中加载初始数据时,如何在 react-transition-group 中暂停动画?

javascript - 等待 IIFE 结果与单独的异步函数

JavaScript 贷款计算器

javascript - 如何循环遍历mysql数据库中的消息并正确显示它们

javascript - 运行 babel-node 时出错

javascript - 获取当前匹配的路由

在 Flask render_template 期间使用相对路径找不到 Javascript 文件

javascript - react : How do I move my ajax api call into a separate component?

html - 在 ReactJS 上,我的 'root' div 并没有一直向上延伸。我怎样才能扩大它?

reactjs - 如何在 react 中单击按钮在新选项卡中打开页面?我也想向该页面发送一些数据