React全家桶-react-router原理实现

本教程深入探讨React全家桶的使用,包括React Router的高级特性,如动态路由、懒加载、路由守卫及404页面配置。通过实例讲解如何创建加强版Route组件,实现条件渲染和重定向。

29.9React课程

第05节:react全家桶

(第5节:react全家桶&)

第5节:react全家桶&

App.js

exact精确匹配,可以使用switch独占如果有一个匹配不会继续往下走,一般要与exact配合使用,否则下面不会执行

fallback返回任意jsx语法,增加动态引入与懒加载实现

import React, { Suspense, lazy } from "react";
import logo from "./logo.svg";
import "./App.css";

import {
  BrowserRouter as Router,
  HashRouter,
  Route,
  Link,
  Switch,
  Redirect
} from "react-router-dom";
import ListTest from "./Pages/ListTest";
// import DetailTest from "./Pages/DetailTest";

const DetailTest = lazy(() => import("./Pages/DetailTest"));

function Index(props) {
  console.log(props);
  return <h2>首页</h2>;
}
function Nav({ history, location }) {
  console.log(history, location);
  return <h2>导航</h2>;
}
function Test404() {
  return <h2>404</h2>;
}

//实现加强版本的route

function UpRoute({ component: Component, isLogin, ...rest }) {
  return (
    <Route
      {...rest}
      render={props => {
        return isLogin ? (
          <Component {...props} />
        ) : (
          <Redirect to={
  
  { pathname: "/login" }} />
        );
      }}
    ></Route>
  );
}

function Login() {
  return <h2>Login</h2>;
}

function Test(props) {
  console.log(props);

  return (
    <div>
      <h2>守卫内容</h2>
    </div>
  );

  // return <div>

  //   {
  //     props.isLogin ? Component : <Redirect to={
  
  {pathname:"/login"}}/>
  //   }
  // </div>  ;
}

function App() {
  return (
    <Router>
      <div className="App">
        <h1>React-router</h1>
        <ul>
          <li>
            <Link to="/">首页</Link>
          </li>
          <li>
            <Link to="/nav">菜单1</Link>
          </li>
          <li>
            <Link to="/list">列表</Link>
          </li>
          <li>
            <Link to="/detail/10001">详情</Link>
          </l
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wespten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值