【前端知识】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 基础巩固(四十一)——手动路由跳转、参数传递及路由配置

    利用 useNavigate 封装一个 withRouter(hoc/with_router.js) 添加到hoc/index.js文件中 利用withRouter,拦截Home组件,实现手动跳转路由 路由参数传递包括:1.动态路由传参;2.查询字符串传参 改造withRouter,通过 useParams() 和 useSearchParams() 来接收两种参数传递: 在界面中,通过params来接收

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月14日
    浏览(54)
  • 【前端知识】React 基础巩固(三十五)——ReduxToolKit (RTK)

    Redux Tool Kit (RTK)是官方推荐的编写Redux逻辑的方法,旨在成为编写Redux逻辑的标准方式,从而解决上面提到的问题。 RTK的核心API主要有如下几个: configureStore:包装createStore以提供简化的配置选项和良好的默认值。它可以自动组合你的slice reducer,添加你提供的任何Redux中间件

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

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

    2024年02月10日
    浏览(51)
  • 【前端知识】React 基础巩固(十九)——组件化开发(三)

    Main.jsx TabControl/index.jsx TabControl/style.css

    2024年02月13日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包