React 生态应用 - React Router(1)

目录

扩展学习资料

 安装和导入

Route匹配

@src/components/navbar.jsx

@src/App.js


扩展学习资料

资料名称

链接

备注

阅读react router组件文档

https://react-router.docschina.org/web/guides/philosophy

Introduction | React Router 中文文档

扩展阅读

路由鉴权

React路由鉴权 - 掘金

React-Router v6 新特性解读及迁移指南

React-Router v6 新特性解读及迁移指南_前端劝退师的博客-CSDN博客

 安装和导入

// v6
npm install react-router-dom --save 
  • react-router 路由核心功能
  • react-router-dom 基于【依赖】React-router,加入了一些在浏览器运行下的一些功能

基于浏览器开发的我们,只需要安装react-router-dom就可以了

react-router-dom 提供的相关组件

  • BrowserRouter(基于history Api) http://www.abc.com/article/a1
  • hashRouter (#锚点路由) http://www.abc.com/#/article/a1

Route匹配

npm i react-router-dom@5.2.0
  • Route
    • 比较path属性和当前地址的pathname。当一个匹配成功,它将渲染其内容,当它不匹配时就会渲染null
  • Switch
    • 一个会遍历其所有的子元素,并仅渲染与当前地址匹配的第一个元素
  • Link
    • 使用作为url的导航,让整个应用不刷新页面在不同网址之间切换

@src/components/navbar.jsx

import React from 'react';
import { Link } from 'react-router-dom';
// 因为组件都打包到了bundle.js中,所以根据Link路由去判断组件加载就不会请求网络数据
const NavBar = () => {
  return (
    <ul>
      <li>
        {/* 只加载局部组件 */}
        <Link to='/'>Home</Link>
      </li>
      <li>
        <Link to='/products'>Products</Link>
      </li>
      <li>
        <Link to='/posts/2018/06'>Posts</Link>
      </li>
      <li>
        <Link to='/admin'>Admin</Link>
      </li>
    </ul>
  );
};
export default NavBar;
npm i react-router-dom@6.2.0
  • Routes
    • 替换Switch,更好用。

@src/App.js

import React, { Component } from 'react';
import NavBar from './components/navbar';
import Products from './components/products';
import Posts from './components/posts';
import Home from './components/home';
import Dashboard from './components/admin/dashboard';
// import ProductDetails from './components/productDetails';
// import NotFound from './components/notFound';
import { Route, Routes, Switch } from 'react-router-dom';
class App extends Component {
  render() {
    return (
      <div>
        <NavBar />
        <div className='container'>
          <Routes>
            {/* v6版本语法 */}
            <Route path='/products' element={<Products groupId="99" />} />
            <Route path='/posts' element={<Posts />} />
            <Route path='/admin' element={<Dashboard />} />
            <Route path='/' element={<Home />} />
            {/*v5版本语法 
            // <Switch> || exact只匹配第一个符合路由的组件
            <Route path='/' exact component={Home} />
            <Switch>
              <Route path='/products' render={()=><Products {...this.props} groupId="99" />} />
            </Switch>
             */}
          </Routes>
        </div>
      </div>
    );
  }
}
export default App;

react-router v5文档 中文文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值