React-router(路由)

  1. 我们使用的是4.+版本,使用的是react-router-dom

  2. react-router是3.x的版本

  3. 路由的模式有两种

    • 老浏览器提供的 hash模式, 我们称之为: HashRouter
    • H5提供的的 hsitory 模式,我们称之为 BrowserRouter
      注意: H5模式的路由需要后端支持
  4. 使用路由

  5. 书写路由展示区域, 使用 Route

  6. 重定向

  • 第一种
    
      <Route to = "/" component = { Home }/>
    
  • 第二种
  1. 路径完全匹配 exact
    
      <Route to = "/" component = { Home } exact/>
    
  2. Switch
  3. NavLink
    代码:
    import React from 'react';
    import './App.css';
    import { Route,Switch,NavLink } from 'react-router-dom'

    import Home from './page/home'
    import Mine from './page/mine'


    function App() {
      return (
          <div className="App">
            <h3> React-router </h3>
            <hr/>
            <nav className="nav justify-content-center">
              <NavLink  activeClassName = "active" className="nav-link" to="/home"> Home </NavLink>
              <NavLink  activeClassName = "active" className="nav-link" to="/mine"> mine </NavLink>
              <NavLink  activeClassName = "active" className="nav-link" to="/mine/login"> login </NavLink>
            </nav>
            <Switch>
              <Route path = '/' component = { Home } exact></Route>
              <Route path = "/home" component = { Home }></Route>
              <Route path = "/mine" component = { Mine } exact></Route>
              <Route path = "/mine/login" render = { () => {return <div> login </div>}}></Route>
            </Switch>
          </div>
      );
    }

    export default App;

外部index.js修改为:

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import * as serviceWorker from './serviceWorker';
    // 在入口文件 引入react-react-dom
    // import { HashRouter as Router } from 'react-router-dom'
    import { BrowserRouter as Router } from 'react-router-dom'
    ReactDOM.render(
      <Router>
        <App />
      </Router>
      , document.getElementById('root'));

    // If you want your app to work offline and load faster, you can change
    // unregister() to register() below. Note this comes with some pitfalls.
    // Learn more about service workers: https://bit.ly/CRA-PWA
    serviceWorker.unregister();

  1. 路由传参
<NavLink activeClassName = "active" className="nav-link" to = {{ pathname: "/list", search: '?id=1',state: { count:1 } }}>list</NavLink>
  1. 路由接参
    在对应的组件内接参
class List extends Component {
	render () {
		return (
			<Fragment>
			List
			<p> pathname: { this.props.location.pathname } </p>
			<p> search: { this.props.location.search } </p>
			<p> state: { this.props.location.state.count } </p>
			</Fragment>
		)
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值