• react一看就会的简单路由设置


    不管是vue还是react  这种单页面的框架一定都少不了路由

    下面给大家讲讲在实际项目中react的路由设置

    第一步:

            在src目录下新建一个目录route  在该目录下新建一个index.js用于管理路由

    如:

    import React ,{ Component } from 'react'
    import {Switch,Route,Redirect} from 'react-router-dom'
    import FristIndex from '../view/index/index'
    import About from '../view/about/index'
    import Book from '../view/book/index'
    import Detail from '../view/detail/index'
    import User from '../view/user/index'
    class RouterIndex extends Component{
    render(){
    return(
    <Switch>//switch用于匹配路由path
    <Route path='/' exact render={()=>(//exact是用于精准匹配,这里是定义了路由重定向,意思是当我们进入"/"时会重定向到“/index”
    <Redirect to='/index'/>
    )}/>
    <Route path='/index' component={FristIndex}/>
    <Route path='/about' component={About}/>
    <Route path='/book' component={Book} />
    <Route path='/detail/:id' component={Detail}/>//注意这里的:id是为url设置参数 我们可以在detail组件下通过this.props.match.params.id获得
    <Route path='/user/:id' component={User}/>
    </Switch>
    )
    }
    }

    export default RouterIndex

    第二步:

          在src根目录下的顶层组件App.js中渲染第一步设置好的路由

    import React, { Component } from 'react';
    import { Popconfirm, message, Button ,Layout} from 'antd';
    import RouterIndex from'./route/index';//引入路由管理js
    import Com_head from './view/Com_head';
    import Com_footer from './view/Com_footer';
    require('./view/index.css')
    class App extends Component {
      render() {
        return (
          <div className='pageBox'>
          <Com_head id='heads'/>//头部固定组件
          <Layout.Content id='main'>
          <RouterIndex/>//中间使用路由渲染
          </Layout.Content>
          <Com_footer id='footers'/>//底部固定组件
          </div>
        );
      }
    }

    export default App;

    第三步:

        经过以上两步,我们就可以在具体的界面组件中通过Link 进行路由跳转了!

    如:

        import React from 'react'
    import { Row,Col,Menu } from 'antd'//这里的antd为阿里封装的react组件库 Row /Col相当于bootstrap中栅格系统Menu相当于UL具体的可以参考ant.design官网
    import {Link} from 'react-router-dom'
    export default class Nav extends React.Component{
    state = {
    current: 'math',
    }
    handleClick = (e)=>{
    this.setState({
    current:e.key
    })
    }
    render(){
    const { classN,mdval,xsval,ulClassN,modeval } = this.props.pram
    return(
    <Col className={classN} md={mdval} xs={xsval}>
    <Menu 
    className={ulClassN} 
    mode={modeval} 
    id={`${ulClassN==''?'xsNav':''}`}
    onClick={this.handleClick}
    selectedKeys = {[this.state.current]}
    >
    <Menu.Item key="math">
    <Link to='/book/math'>数学</Link>
    </Menu.Item>
    <Menu.Item key="china">
    <Link to='/book/china'>语文</Link>
    </Menu.Item>
    <Menu.Item key="pe">
    <Link to='/book/pe'>体育</Link>
    </Menu.Item>
    <Menu.Item key="print">
    <Link to='/book/print'>美术</Link>
    </Menu.Item>
    </Menu>
    </Col>
    )
    }
    }
    ---------------------
    作者:永远在追求
    来源:CSDN
    原文:https://blog.csdn.net/weixin_41421227/article/details/80875807
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    ajax 通过回调函数获取异步数据
    (淘宝无限适配)手机端rem布局详解(转载非原创)
    rem在响应式布局中的应用
    移动端页面适配解决方案
    flex 布局,flex-grow 宽度未等比放大问题解决办法
    flex 布局
    bootstrap Modal 模态框垂直居中
    require.js实现单页web应用(SPA)
    解决 html5 input type='number' 类型可以输入e
    jquery 的ready() 与window.onload()的区别
  • 原文地址:https://www.cnblogs.com/snowhite/p/10112174.html
Copyright © 2020-2023  润新知