react-router-dom示例讲解(一)——基本使用

在react-router-dom的官方教程中,一共给出12个示例,但是个人认为,着12个示例看着真的很累人,很多写法,不是标准的企业项目应用的写法,所以针对这个现状,我想用企业项目开发的要求,对教程中的每一个示例进行重写,这篇教程就是它的第一个示例——基本使用。

原则上,我默认为你已经搭建好了关于react-router-dom的脚手架开发环境,这里不进行赘述。如果有不明白的,具体可查看这篇文章——使用create-react-app搭建react项目的开发环境

我自己实现的效果如下:
基本使用的demo

第一步、根据改造好的界面,在App.js中,我这样配置我的路由。

//render函数中:
<Router>
    <div>
        <ul>
            <li><Link to='/'>首页</Link></li>
            <li><Link to='/about'>关于</Link></li>
            <li><Link to='/topics'>主题列表</Link></li>
        </ul>
        <hr/>
        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
        <Route path="/topics" component={Topics} />
    </div>
</Router>

Router作为App.js一个根组件,其中里面的Link组件申明了路由的跳转路径,Route组件申明了组件根据不同的路径,所展示的不同视图。

然后就实现了不同的路径切换的时候,展示了不同的视图。

但是这个示例的另一个难点就是Topics组件,在这个组件中,它自己会展示自己的子路由!!!

我是这样进行Topics组件的子路由实现的:

//render函数中:
<div>
    <h1>主题列表</h1>
    <ul>
        <li>
            <Link to={`${this.props.match.url}/rendering`}>
                使用 React 渲染
            </Link>
        </li>
        <li>
            <Link to={`${this.props.match.url}/components`}>
                组件
            </Link>
        </li>
        <li>
            <Link to={`${this.props.match.url}/props-v-state`}>
                属性 v. 状态
            </Link>
        </li>
    </ul>

    <Route path={`${this.props.match.url}/:topicId`} component={Topic}/>
    <Route exact path={this.props.match.url} render={() => (
        <h3>请选择一个主题。</h3>
    )}/>
</div>

这个子路由中,没有使用Router组件包含Link组件以及Route组件,但是作为核心的Link组件以及Route组件都是存在的。其中Link负责路由选择,Route负责视图展示。在默认路径的情况下,给一个用于提示信息的Route(也就是上面的请选择一个主题)。

子路由使用到的Topic组件,非常简单,仅仅是用来展示Topics组件传递下来的topicId。

export default class Home extends Component{
    render(){
        return (
            <div>
                {this.props.match.params.topicId}
            </div>
        )
    }
}

如果还有不明白,请参阅我的关于这个示例的github地址:
https://github.com/liwudi/react-router-dom1.git

下一篇:react-router-dom示例讲解(二)——url路径参数

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值