react-router-dom学习及案例

1 篇文章 0 订阅

react-router-dom学习

三大核心

  • Router 所有组件共用的最外层
  • Route 路由规则匹配,并显示当前规则匹配到的组件
  • Link 路由的跳转组件,会渲染为a标签【通过this.props.history.push(path)来改变HashRouter中的pathname属性,进而驱动Route们进行重新渲染,匹配路由实现路由切换】

其他

  • HashRouter url为hash的路由,原理是window.location.hash
  • BrowserRouter 浏览器的路由组件
  • MeroryRouter 内存路由组件
  • NativeRouter native的路由组件
  • StaticRouter 地址不变的路由组件

具体操作

  1. 下载
使用npm
npm install react-router-dom //或者 cnpm install react-router-dom
使用yarn
yarn add react-router-dom //或者 tyarn add react-router-dom
  1. 使用

router.js 【exact为精准匹配】

import React from 'react'
import {HashRouter, Route, Switch} from 'react-router-dom' 

 import Login from '../pages/login';//登陆页面
 import Home from '../pages/home';//首页

const BaseRoute = () => {
  return (
    <HashRouter>
      <Switch>
        <Route path="/" exact key="home" component={Home}/>
        <Route path="/home" exact key="home" component={Home}/>
        <Route path="/login" exact key="login" component={Login}/>
      </Switch>
    </HashRouter>
  )
};
export default BaseRoute;

index.js

import React from 'react';
import ReactDOM from 'react-dom'; 
import BaseRoute from './router'

ReactDOM.render(
  <React.StrictMode>
    <BaseRoute/>
  </React.StrictMode>,
  document.getElementById('root')
);

home.js

import React,{Component} from 'react'

class Home extends Component{
  optionTo(){
	this.props.history.push('/login')
  }
  render(){
    return (
      <div>
      我是首页
      <p onClick={this.optionTo.bind(this)}>点我去登陆</p>
      </div>
    )
  }
}
export default Home;

login.js

import React,{Component} from 'react'

class Login extends Component{
  render(){
    return (
      <div>
        我是登陆页
        
      </div>
    )
  }
}
export default Login;
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值