【前端知识】React 基础巩固(四十)——Navigate导航

这篇具有很好参考价值的文章主要介绍了【前端知识】React 基础巩固(四十)——Navigate导航。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

React 基础巩固(四十)——Navigate导航

一、Navigate的基本使用

  1. 新建Login页面,在Login中引入Navigate,实现点击登陆按钮跳转至/home路径下:

    import React, { PureComponent } from "react";
    import { Navigate } from "react-router-dom";
    
    export class Login extends PureComponent {
      constructor(props) {
        super(props);
    
        this.state = {
          isLogin: false,
        };
      }
    
      login() {
        this.setState({
          isLogin: true,
        });
      }
    
      render() {
        const { isLogin } = this.state;
        return (
          <div>
            <h1>login page</h1>
            {!isLogin ? (
              <button onClick={(e) => this.login()}>登陆</button>
            ) : (
              <Navigate to="/home" />
            )}
          </div>
        );
      }
    }
    
    export default Login;
    
    
  2. 当路由均无匹配时,通过Navigate跳转至NotFound界面,其中*为通配符:

    构建NotFound.jsx

    import React, { PureComponent } from 'react'
    
    export class NotFound extends PureComponent {
      render() {
        return (
          <div>
            <h1>Not Found Page</h1>
            <p>路径不存在,请检测之后再操作。</p>
          </div>
        )
      }
    }
    
    export default NotFound
    
    

    在App.jsx中配置NotFound:

    import React, { PureComponent } from "react";
    import { Route, Routes, NavLink, Navigate } from "react-router-dom";
    import "./style.css";
    import Home from "./pages/Home";
    import About from "./pages/About";
    import Login from "./pages/Login";
    import NotFound from "./pages/NotFound";
    
    export class App extends PureComponent {
      render() {
        return (
          <div className="app">
            <div className="header">
              <span>header</span>
              <div className="nav">
                <NavLink to="/home">首页</NavLink>
                <NavLink to="/about">关于</NavLink>
                <NavLink to="/login">登陆</NavLink>
              </div>
              <hr />
            </div>
            <div className="content">
              {/* 映射关系: path => Component */}
    
              <Routes>
                <Route path="/" element={<Navigate to="/home" />} />
                <Route path="/home" element={<Home />} />
                <Route path="/about" element={<About />} />
                <Route path="/login" element={<Login />} />
                <Route path="*" element={<NotFound />} />
              </Routes>
            </div>
            <div className="footer">Footer</div>
          </div>
        );
      }
    }
    
    export default App;
    
    

二、路由嵌套和配置

  1. 构建Home的子路由页面:

    HomeRecommend.jsx

    import React, { PureComponent } from 'react'
    
    export class HomeRecommend extends PureComponent {
      render() {
        return (
          <div>
            <h2>Banner</h2>
            <h2>歌单列表</h2>
            <ul>
                <li>歌单1</li>
                <li>歌单2</li>
                <li>歌单3</li>
            </ul>
          </div>
        )
      }
    }
    
    export default HomeRecommend
    
    

    HomeRanking.jsx

    import React, { PureComponent } from 'react'
    
    export class HomeRanking extends PureComponent {
      render() {
        return (
          <div>
            <h2>Ranking Nav</h2>
            <h2>榜单数据</h2>
            <ul>
                <li>歌曲数据1</li>
                <li>歌曲数据2</li>
                <li>歌曲数据3</li>
                <li>歌曲数据4</li>
                <li>歌曲数据5</li>
            </ul>
          </div>
        )
      }
    }
    
    export default HomeRanking
    
    
  2. 利用Route嵌套子路由,实现Home页面下的子路由切换:

    import React, { PureComponent } from "react";
    import { Route, Routes, NavLink, Navigate } from "react-router-dom";
    import "./style.css";
    import Home from "./pages/Home";
    import About from "./pages/About";
    import Login from "./pages/Login";
    import NotFound from "./pages/NotFound";
    import HomeRecommend from "./pages/HomeRecommend";
    import HomeRanking from "./pages/HomeRanking";
    
    export class App extends PureComponent {
      render() {
        return (
          <div className="app">
            <div className="header">
              <span>header</span>
              <div className="nav">
                <NavLink to="/home">首页</NavLink>
                <NavLink to="/about">关于</NavLink>
                <NavLink to="/login">登陆</NavLink>
              </div>
              <hr />
            </div>
            <div className="content">
              {/* 映射关系: path => Component */}
    
              <Routes>
                <Route path="/" element={<Navigate to="/home" />} />
                <Route path="/home" element={<Home />} >
                  // 当一开始进入/home时,Home中的子页面默认展示recommend页面
                  <Route path="/home" element={ <Navigate to="/home/recommend" />}/>
                  <Route path="/home/recommend" element={ <HomeRecommend/>}/>
                  <Route path="/home/ranking" element={ <HomeRanking/>}/>
                </Route>
                <Route path="/about" element={<About />} />
                <Route path="/login" element={<Login />} />
                <Route path="*" element={<NotFound />} />
              </Routes>
            </div>
            <div className="footer">Footer</div>
          </div>
        );
      }
    }
    
    export default App;
    
    
  3. 查看效果

    【前端知识】React 基础巩固(四十)——Navigate导航,前端知识,React,react.js,前端,前端框架

    【前端知识】React 基础巩固(四十)——Navigate导航,前端知识,React,react.js,前端,前端框架文章来源地址https://www.toymoban.com/news/detail-622366.html

到了这里,关于【前端知识】React 基础巩固(四十)——Navigate导航的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【前端知识】React 基础巩固(四十四)——其他Hooks(useContext、useReducer、useCallback)

    在类组件开发时,我们通过 类名.contextType = MyContext 的方式,在类中获取context,多个Context或者在函数式组件中通过 MyContext.Consumer 方式共享context: 可以看到,当我们需要使用多个Context时,存在大量繁琐的嵌套代码;而Context Hook能够让我们通过Hook直接获取某个Context的值,如

    2024年02月14日
    浏览(12)
  • 【前端知识】React 基础巩固(十三)——列表渲染

    在 React 中没有像 Vue 模块语法中的 v-for 指令,而是需要我们通过 JS 代码的方式组织数据,转成 JSX 在 React 中,展示列表最多的方式就是使用数组的 map 高阶函数 在展示数组前,有时会进行一些处理 过滤一些内容(filter 函数) 截取数组中的一部分内容(slice 函数) 列表中的

    2024年02月10日
    浏览(12)
  • 【前端知识】React 基础巩固(二十三)——React 性能优化 SCU相关

    React 的渲染流程 JSX - 虚拟 DOM - 真实 DOM React 的更新流程 props/state 改变 - render函数重新执行 - 产生新的DOM树 - 新旧DOM树进行diff - 计算出差异进行更新 - 更新到真实的DOM React 在 props 或 state 发生改变时,会调用 React 的 render 方法,会创建一颗不同的树 React 需要基于这两颗不同的

    2024年02月15日
    浏览(20)
  • 【前端知识】React 基础巩固(二十七)——Fragment

    【前端知识】React 基础巩固(二十七)——Fragment

    Fragment 允许将子列表分组,而无需向 DOM 添加额外节点 可以采用语法糖 / 来替代 Fragment,但在需要添加 key 的场景下不能使用此短语 查看Fragment应用后的效果

    2024年02月16日
    浏览(11)
  • 【前端知识】React 基础巩固(二十八)——StrictMode

    【前端知识】React 基础巩固(二十八)——StrictMode

    StrictMode 是一个用来突出显示应用程序中潜在问题的工具 与 Fragment 一样,StrictMode 不会渲染任何可见的 UI 为后代出发额外的检测和警告 严格模式检查仅在开发模式下运行,不影响生产构建 严格模式检查什么? 识别不安全的生命周期 使用过时的 ref API 检查意外的副作用 组件

    2024年02月16日
    浏览(24)
  • 【前端知识】React基础巩固(二)——JSX注意点

    createElement存在的问题: 繁琐不简洁 不直观,无法一眼看出所描述的结构 不优雅,开发体验不好 JSX 简介:JSX 是 JavaScript XML 的简写,表示了在JS代码中写XML(HTML)格式的代码 优势:声明式语法更加直观,与HTML结构相同,降低学习成本,提高开发效率 JSX 是 react 的核心内容‘

    2024年02月09日
    浏览(10)
  • 【前端知识】React 基础巩固(三十九)——React-Router的基本使用

    【前端知识】React 基础巩固(三十九)——React-Router的基本使用

    Router中包含了对路径改变的监听,并且会将相应的路径传递给子组件。 Router包括两个API: BrowserRouter使用history模式 HashRouter使用hash模式(路径后面带有#号) 尝试在项目中使用HashRouter: 安装Router 在 index.js 中引入并使用HashRouter Routes:包裹所有的Route,在其中匹配一个路由(

    2024年02月14日
    浏览(12)
  • 【前端知识】React 基础巩固(二十六)——Portals 的使用

    【前端知识】React 基础巩固(二十六)——Portals 的使用

    通常,组件会渲染到 root 节点下。可使用 Portals 将组件渲染至其他节点。 添加 id 为 more、modal 的 div 元素 构建 Modal.jsx, 通过 createPortal 把组件渲染到指定的 modal 节点下 构建 App.jsx 查看渲染结果

    2024年02月16日
    浏览(20)
  • 【前端知识】React 基础巩固(十七)——组件化开发(一)

    什么是组件化开发? 分而治之的思想 将一个页面拆分成一个个小的功能块 将应用抽象成一颗组件树 React的组件相对于Vue更加的灵活和多样 按照不同的方式可以分为很多类组件 根据 组件的定义方式 ,分为: 函数组件 、 类组件 根据 组件内部是否有状态需要维护 ,分为:

    2024年02月12日
    浏览(25)
  • 【前端知识】React 基础巩固(七)——JSX 的基本语法

    JSX 是一种 JS 的语法扩展(extension),也可以称之为 JavaScript XML,因为看起来就是一段 XML 语法 它用于描述我们的 UI 界面,并且其可以和 JS 融合在一起使用 它不同于 Vue 中的模块语法,不需要专门学习模块语法中的指令 React 认为 渲染逻辑 本质上与 其他UI逻辑 存在内在耦合

    2024年02月10日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包