热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

react声明式导航和编程式导航

react声明式导航和编程式导航-react中的两种路由导航方法【声明式导航、编程式导航】主要使用的方法【Link,NavLink,useHistory(),Route】前言:

react中的两种路由导航方法【声明式导航、编程式导航】

主要使用的方法Link, NavLink, useHistory() ,Route
前言: 在react中的导航方式自己主要以声明式导航为主,无他,因为简单。但是在使用UI框架后,很多地方是需要点击按钮进行跳转,只能用编程式导航了,百度了很多,找了个最简单的,在这里做好笔记的同时也希望可以帮到正在学习react的伙伴。首先是简单的声明式导航,而后说一下编程式导航。稍显罗里吧嗦?


1、声明式导航 【Link,NavLink】

声明式导航自己主要用到的是react中的两个路由组件【Link、NavLink】。其中Link组件的导航方式和HMTL中的a标签类似,在react将虚拟DOM渲染成真实DOM后,Link组件也被渲染成了a标签。下面看一下例子顺便在代码中附上react中的路由懒加载方式
Link 方式

import React, { Component,lazy,Suspense } from 'react'//导入了路由懒加载模块
import { Route,Redirect,Link} from 'react-router-dom'
import Login from '../Login/index'
const lazyCompOnent= lazy(() => import('../lazyComponent')); //使用路由懒加载的方式加载组件
export default class World extends Component {
render() {
return (


{/* 使用路由 */}



  • {/*使用Link跳转,同时携带参数ID*/}
    跳转到Login


    跳转到路由懒加载组件







  • {/*渲染路由组件Login到该位置,同时接收到路由参数ID*/}

    {/*重定向*/}



  • {/*使用路由懒加载的模块,路由组件未加载出来前会以Loading字符显示在页面中*/}
    Loading...}>







)
}
}

NavLink 方式
NavLink方式相当于Link的加强版,主要的属性有

activeClassName(string):设置选中样式,默认值为active
activeStyle(object):当元素被选中时,为此元素添加样式
exact(bool):为true时,只有当导致和完全匹配class和style才会应用
strict(bool):为true时,在确定为位置是否与当前URL匹配时,将考虑位置pathname后的斜线
isActive(func)判断链接是否激活的额外逻辑的功能

需要查看两者的主要区别在这里附上 CSDN 博文一篇 https://blog.csdn.net/lhjuejiang/article/details/80366839
如下代码,在被点击时可以显示路径对应的背景色,路径相同时则显示相同的背景色

import { NavLink} from 'react-router-dom'
import React from 'react'
import './index.scss'
export default function Aside(){
return(



  • 二级菜单


  • 二级菜单


  • 二级菜单


  • 二级菜单



)
}

scss中的代码:


2、编程式导航 【useHistory(),Route】

个人比较喜欢偷懒的方式,用了类似vue3中useRouter( )的导航方式,使用了react中的新增的
useHistory() 钩子(hook)来做函数式组件的编程式导航,请看示例代码:
注意: 该钩子函数只能用于函数组件

import { useHistory } from 'react-router';//导入useHistory钩子
import { Button } from 'antd';
export default function Header(){
let history = useHistory() //将useHistory()钩子赋值给history方便使用
let programmingLink = function(){
history.push('/home')//点击按钮后使用push方法跳转到对应的路由位置
}
return(






)
}

在类式组件中进行编程式跳转【Route】

import { Component } from 'react'
import { Route } from 'react-router'
export default class Footer extends Component {
render () {
return (
<>
()} />

)
}
}

需要更详细的类式组件编程式跳转,可以看下博客园的这篇博客
https://www.cnblogs.com/panrui1994/p/11865650.html

使用编程式跳转的方法不只是使用useHistory()钩子和react-router中的Route,也可以使用其他的方式进行跳转,这里自己只是选择了自己认为比较简单的方法。希望能帮到您,同时非常希望能有巨佬能批评指正加以补充?




推荐阅读
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 详解react组件通讯方式(多种)
    这篇文章主要介绍了详解react组件通讯方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • React提供三种方式创建Refs:字符串Refs(将被废弃)回调函数RefsReact.createRef(从React16.3开始)第一种方式不推荐使用,原因在此,并且可能会在之后的版本移除。classMyComponentextendsReact.Component{constructor(props){sup ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • Vue3中setup函数的参数props和context配置详解
    本文详细介绍了Vue3中setup函数的参数props和context的配置方法,包括props的接收和配置声明,以及未通过props进行接收配置时的输出值。同时还介绍了父组件传递给子组件的值和模板的相关内容。阅读本文后,读者将对Vue3中setup函数的参数props和context的配置有更深入的理解。 ... [详细]
  • 一、路由首先需要配置路由,就是点击good组件进入goodDetail组件配置路由如下{path:goodDetail,component:goodDetail}同时在good组件中写入如下点击事件,路由中加入 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 程序员_阿里Antd藏圣诞节彩蛋 程序员被离职
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了阿里Antd藏圣诞节彩蛋程序员被离职相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
巩俐1996
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有