React 路由

230 阅读1分钟

Router.js

import React from 'react'
import { BrowserRouter as Router, Route, Switch } from "react-router-dom"
import App from './Pages/app'
import Login from './Pages/login'
import Home from './Pages/home'
import Detail from './Pages/detail'
import noMatch from './Pages/404'

export default function IRouter() {
    return <Router>
        <Switch>
            <Route exact path="/" component={App}></Route>
            <Route path="/login" component={Login}></Route>
            <Route path="/home" component={Home}></Route>
            <Route path='/detail/:id/:ss' component={Detail}></Route>
            <Route path="*" component={noMatch}></Route>
        </Switch>
    </Router>
}

app.js

import React,{useState,useEffect} from 'react'
import {Link } from 'react-router-dom'
import  { Button } from 'antd'
import './app.scss'
import 'antd/dist/antd.css'

export default function App(){
    let [cnt,setCnt]= useState(0);
    useEffect(()=>{
        console.log('Executed useEffect');

    },[]);
    return <div className='container'>
      <h1>Welcome here!</h1>
        <Link to='/home'>Home</Link><br/>
        <Link to='/Login'>Login</Link><br/>
        <p>{cnt}</p><br/>
        <Button onClick={()=>{setCnt(cnt+1)}}>添加次数</Button>

    </div>

}


// class App extends React.Component {

//     handleJump = () => {    
//         this.props.history.push('/home');


//     }
//     render() {
//         return <div className='container'>
//             <h1>Welcome here!</h1>
//             <Link to='/home'>Home</Link><br />
//             <Link to='/Login'>Login</Link> <br/>
//             <Button onClick={this.handleJump}>Home</Button>
//         </div>

//     }
// }

//export default App;

Detail.js

import React from 'react'
import {useParams,useHistory} from 'react-router-dom'
import {Button} from 'antd'
import 'antd/dist/antd.css'

export default function Detail(){
    const params=useParams();
    const hisotry=useHistory();
    return <div>
       <p> This is Detail: {params.id} ; {params.ss} </p>
        {/* //{this.props.match.params.id} */}
        <Button onClick={()=>{hisotry.push('/') }}> Jump to Root </Button>
    </div>
}