账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于React-router嵌套的问题
    • 东京的樱花在巴黎飘落2020-01-24 10:11
    40
    0

    题目描述

    如何通过绝对路径访问某个组件的子组件?

    相关代码

    router.js(总路由)

    export default class RouteConfig extends Component {
      render () {
        return (
          <Router>
            <Switch>
              <Route path="/" exact>
                <Redirect to="/login" />
              </Route>
              <Route path="/login" component={Login} />
              <Route path="/home" component={Home} />
              <Route component={NoMatch} />
            </Switch>
          </Router>
        )
      }
    }

    home.jsx(这一步感觉多余,是不是应该直接用layout好点呢?)

    export default function Home (props) {
      return <div>
        <Layout {...props} />
      </div>
    }

    layout.jsx

    export default class Layout extends Component {
      render () {
        return <div className="layout-box">
          <Header />
          <Aside />
          <div className="container">
            <Content {...this.props} />
            <Footer />
          </div>
        </div>
      }
    }

    content.jsx(带父组件路由前缀的)

    const Content = ({ location }) => {
      return <div className="content-box">
        <Redirect from='/' to='/home/bikes' />
        <Route path='/home/bikes' component={Bikes} />
        <Route path='/home/users' component={Users} />
      </div>
    }
    
    export default Content

    content.jsx(不带父组件路由前缀的)

    const Content = ({ location }) => {
      return <div className="content-box">
        <Redirect from='/' to='/bikes' />
        <Route path='/bikes' component={Bikes} />
        <Route path='/users' component={Users} />
      </div>
    }
    
    export default Content

    你期待的结果是什么?

    现在的情况是如果带父组件前缀,也就是/home/bikes, /home/users,可以正常访问<Bikes />,<Users />组件,可是这样看这路径很丑陋,我想直接localhost:3000/bikes就能访问<Bikes />,并且Bikes还是放在<Home />的子组件中,如何处理呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部