首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在react-router的普通对象中转换多个配置路由

在react-router的普通对象中转换多个配置路由
EN

Stack Overflow用户
提问于 2016-08-08 22:35:49
回答 1查看 569关注 0票数 1

我正在尝试在普通路由对象中实现类似如下的路由器结构。

代码语言:javascript
复制
const Demo = () => (
  <Router history={hashHistory}>
    <Route path="/" component={App}>
      <Route path="fade" component={FadeDemo}>
        <IndexRoute component={Lorem} />
        <Route path="demo-1" component={Lorem} />
        <Route path="demo-2" component={Lorem} />
        <Route path="demo-3" component={Lorem} />
      </Route>

我的应用程序路由器如下所示:

代码语言:javascript
复制
export const createRoutes = (store) => ({
  path: '/',
  component: CoreLayout,
  indexRoute: Home,
  childRoutes: [
    CounterRoute(store)
  ]
})

因此,我想在后一个示例中添加来自前一个JSX的FadeDemo转换容器作为不带路径的路由。这有可能吗?

编辑:这是我更新的路由索引文件,现在我得到的不能匹配'/counter‘的位置:

代码语言:javascript
复制
import CoreLayout from '../layouts/CoreLayout/CoreLayout'
import Home from './Home'
import CounterRoute from './Counter'
import TransitionWrapper from './TransitionWrapper'

export const createRoutes = (store) => ({
  path: '/',
  component: CoreLayout,
  indexRoute: Home,
  childRoutes: [{
    //path: 'fade',
    component: TransitionWrapper,
    childRoutes: [
      CounterRoute(store)
      ]
  }]
})

计数器应用程序索引:

代码语言:javascript
复制
import { injectReducer } from '../../store/reducers'

export default (store) => ({
  path: 'counter',
  /*  Async getComponent is only invoked when route matches   */
  getComponent (nextState, cb) {
    /*  Webpack - use 'require.ensure' to create a split point
        and embed an async module loader (jsonp) when bundling   */
    require.ensure([], (require) => {
      /*  Webpack - use require callback to define
          dependencies for bundling   */
      const Counter = require('./containers/CounterContainer').default
      const reducer = require('./modules/counter').default

      /*  Add the reducer to the store on key 'counter'  */
      injectReducer(store, { key: 'counter', reducer })

      /*  Return getComponent   */
      cb(null, Counter)

    /* Webpack named bundle   */
    }, 'counter')
  }
})

TransitionWrapper

代码语言:javascript
复制
import React from 'react'
import { Link } from 'react-router'

import { RouteTransition } from 'react-router-transition'

const TransitionWrapper = (props) => (
  <div>
    <RouteTransition
      component={"div"}
      className="transition-wrapper"
      pathname={this.props.location.pathname}
      {...props.preset}
    >
      {this.props.children}
    </RouteTransition>
  </div>
)

export default TransitionWrapper
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-08 23:08:51

Here描述了如何实现它。

代码语言:javascript
复制
export const createRoutes = (store) => ({
  path: '/',
  component: CoreLayout,
  indexRoute: Home,
  childRoutes: [
    {
      component: FadeDemo,
      childRoutes: [
        {
          path: 'demo-1',
          component: Lorem
        },
        {
          path: 'demo-2',
          component: Lorem
        }
        // ...
      ]
    },
  ]
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38832022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档