React又见路由之子路由

我们做应用时经常需要做底部或者顶部导航切换变换页面功能,类似Android的导航+Fragment
在这里插入图片描述在这里插入图片描述
1、创业一个商城界面首页

先加入路由 <Route path="/goods" component={GoodsIndex}/>


import React from 'react';
import HeaderComponent from '../common/header'
import {Route, Switch,Redirect} from 'react-router-dom';
import GoodsDetail from './details';
import GoodsComment from './comment';
export default class GoodsIndex extends React.Component {
    render() {
        return (
            <div>
                {/*界面公共头部*/}
                <HeaderComponent/>
                {/*点击切换详情子页面*/}
                <button onClick={this.goSubPage.bind(this, "/goods/details")}>详情</button>
                {/*点击切换详情子页面*/}
                <button onClick={this.goSubPage.bind(this, "/goods/comment")}>评论</button>
                <div>
                    <Switch>
                        {/*商城子页面 详情页面   子页面路由必须跟随父页面的路由,比如父页面路由为 goods,则子页面路由为/goods/details  */}
                        <Route path="/goods/details" component={GoodsDetail}/>
                        {/*商城子页面 评论页面*/}
                        <Route path="/goods/comment" component={GoodsComment}/>
                        {/*刚进入商城默认子页面  详情页面*/}
                        <Redirect to="/goods/details"/>
                    </Switch>
                </div>
            </div>
        )
    }
    //切换子页面
    goSubPage(path) {
        this.props.history.replace(path);
    }
}
  1. 创建一个公共头部
import React from 'react';
//子组件返回要用这个方法
import {withRouter} from 'react-router';
class HeaderComponent extends React.Component {
    render() {
        return (
            <div>
                <button onClick={this.goBack.bind(this)}>返回</button>
                <text>标题</text>
            </div>
        )
    }
    goBack() {
        this.props.history.goBack();
    }
}
//子组件返回时直接 this.props.history.goBack();用不了,必须用withRouter
export default withRouter(HeaderComponent);

3、两个子页面

import React from 'react';
export default class GoodsDetails extends React.Component {
    render() {
        return (
            <div>我是商品详情</div>
        )
    }
}

import React from 'react';
export default class GoodsComment extends React.Component {
    render() {
        return (
            <div>我是评论</div>
        )
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值