React Dva项目中路由跳转的方法

接下来 我们来看看路由跳转
先打开 我们Dva项目
在这里插入图片描述然后我们需要在routes 下创建一个自己的路由,如果您尚未掌握在Dva项目中创建路由,可以参考我的文章 React 在Dva项目中修改路由配置,并创建一个自己的路由

然后 我的项目有两个路由 router.js代码如下
在这里插入图片描述
一个 / 一个 /ProductPage

其实跳转路由的方式很多 第一种 Link
然后 我们在首页 / 下这样写

import { Link } from "dva/router";

这里 我们引入了Link组件 注意 这里 不再是router 而是 dva下的router 它做了一个封装
然后在页面上这样写

<Link to="/ProductPage">去ProductPage</Link>

使用这个Link组件 to指定要跳转的路径 /ProductPage
然后 我们运行项目
在这里插入图片描述
然后点击我们写的按钮
在这里插入图片描述
这里 就已经完成了跳转

但是 很多时候 我们希望在事件里面做跳转
首先 我们函数方式的组件 需要在方法中接一下props参数
在这里插入图片描述
如果是 类 class 的组件 可以这样 this.props 拿到
然后 我们外面声明一个事件

const toProductPage = () => {props.history.push("/ProductPage");
}

然后 页面上面 我们可以写个按钮 来点击调用这个函数

<Button onClick={ toProductPage } type="primary">Primary Button</Button>

在这里插入图片描述
运行项目
在这里插入图片描述
然后点击我们绑定事件的按钮 这样就完成页面的跳转了
在这里插入图片描述
我们 还可以通过 routerRedux 来完成
首先 引入它

import { routerRedux } from "dva/router";

还是在dva帮我们封装的router下面
然后 我们将之前的toProductPage改成这样

const toProductPage = () => {props.dispatch(routerRedux.push("/ProductPage"));
}

在这里插入图片描述
再次点击 依旧能顺利完成跳转

还有一个比较特殊的东西
我们在src下的 components 目录下创建一个 text.jsx
参考代码如下

import React from "react"
export default class Product extends React.Component {constructor(props){super(props);this.state = {}}toProductPage = () => {this.props.history.push("/ProductPage");}render(){return (<div><button onClick={ this.toProductPage }>Primary Button</button></div>)}
}

我们声明了一个class类形式的组件 然后 在根组件中引入它
在这里插入图片描述
运行项目 之后 我们尝试点击按钮
在这里插入图片描述
这里就报错了 因为这个组件并不在路由包裹下
在这里插入图片描述
在路由包裹下的 这有这两个组件
在这里插入图片描述
这时 我们可以通过withRouter来解决问题
我们将 text.jsx 代码改成这样

import React from "react"
import { withRouter } from "dva/router";
class Product extends React.Component {constructor(props){super(props);this.state = {}}toProductPage = () => {this.props.history.push("/ProductPage");}render(){return (<div><button onClick={ this.toProductPage }>Primary Button</button></div>)}
}export default withRouter(Product)

withRouter 也是在dva封装的router中引入
然后 它是一个高阶函数
我们再次运行项目
然后 点击按钮
在这里插入图片描述
我们的页面跳转就完成了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASFF Learning Spatial Fusion for Single-Shot Object Detection 论文学习

1. 解决了什么问题&#xff1f; 目标检测取得了显著成绩&#xff0c;但是检测不同尺度的目标仍然是一个挑战。金字塔或多层级特征是解决目标检测中尺度变化的常用手段。但对于单阶段目标检测器而言&#xff0c;各特征尺度之间不一致性制约了算法的表现。与图像金字塔相比&…

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性 VMware Workstation Tech Preview 2023 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-workstation-18/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xf…

OpenAI的Function calling 和 LangChain的Search Agent

OpenAI的Function calling openai最近发布的gpt-3.5-turbo-0613 和 gpt-4-0613版本模型增加了function calling的功能&#xff0c;该功能通过定义功能函数&#xff0c;gpt通过分析问题和函数功能描述来决定是否调用函数&#xff0c;并且生成函数对应的入参。函数调用的功能可以…

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址&#xff1a;torch.nn — PyTorch 2.0 documentation 常用的&#xff1a;Sigmoid、ReLU、LeakyReLU等。 作用&#xff1a;为模型引入非线性特征&#xff0c;这样才能在训练过程中…

Java面试题总结记录(3)—— Spring篇

1、什么是Spring&#xff1f; Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对 构建J2EE平台的web应用。 Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过 POJO为基础的编程 模型促进良好的编程习惯 2、你们项…

Socks5代理在爬虫与HTTP应用中的重要性

IP代理的类型及原理常见的IP代理类型有HTTP代理、Socks代理等&#xff0c;本文重点关注Socks5代理。Socks5代理是一种网络协议&#xff0c;可以实现传输层的数据转发&#xff0c;使客户端在不直接连接服务器的情况下与其进行通信。其原理在于接收客户端的请求&#xff0c;然后将…

数组和链表、栈和队列的区别

1.数组和链表的区别 数组和链表是两种不同的数据结构&#xff0c;它们在存储和访问数据上有很大的区别。 1. 存储方式&#xff1a; 数组是一种连续内存空间的数据结构&#xff0c;其元素在内存中是按顺序存储的&#xff0c;通过索引可以直接访问元素。链表是由若干个节点组成…

[k8s] command和args

k8s中的command和args可以覆盖docker镜像中的entrypoint和cmd。其中&#xff0c;k8s-command可以覆盖docker-entrypoint&#xff0c;k8s-args可以覆盖docker-cmd。参考Difference between Docker ENTRYPOINT and Kubernetes container spec COMMAND? 了解一下entrypoint的意义…

Spring 更简单的读取和存储对象

目录 1.存储 Bean 对象 1.1 前置⼯作&#xff1a;配置扫描路径 1.2 添加注解存储 Bean 对象 1.2.1 Controller&#xff08;控制器存储&#xff09; 1.2.2 Service&#xff08;服务存储&#xff09; 1.2.3 Repository&#xff08;仓库存储&#xff09; 1.2.4 Component&a…

Python学习 - Request库

学习和使用 引入 import requests基本语法 Request常用方法总结 responserequests.get(url,params,**kwargs) responserequests.post(url,params,**kwargs)参数含义url目标URL地址params请求发起携带的数据kwargs控制请求访问的参数&#xff0c;使用后可以加入到requests请…

C++---string

String C语言中的字符串和C中的string类标准库中的string类string类的常用接口string类对象的常见构造string类对象的容量操作string类对象的访问及遍历操作 C语言中的字符串和C中的string类 在C语言中&#xff0c;字符串是一个字符数组&#xff0c;它以空字符\0结尾&#xff…

【数据结构】朴素模式匹配 KMP算法

&#x1f387;【数据结构】朴素模式匹配 & KMP 算法&#x1f387; &#x1f308; 自在飞花轻似梦,无边丝雨细如愁 &#x1f308; &#x1f31f; 正式开始学习数据结构啦~此专栏作为学习过程中的记录&#x1f31f; 文章目录 &#x1f387;【数据结构】朴素模式匹配 & K…

【数据架构】Data Fabric 架构是实现数据管理和集成现代化的关键

D&A 领导者应该了解数据编织架构的关键支柱&#xff0c;以实现机器支持的数据集成。 在日益多样化、分布式和复杂的环境中&#xff0c;数据管理敏捷性已成为组织的任务关键优先事项。为了减少人为错误和总体成本&#xff0c;数据和分析 (D&A) 领导者需要超越传统的数据…

Java相关知识点

变量的生命周期&#xff1a;位于内层中的变量可以访问并修改外层变量的值 注意&#xff1a;子类中方法的访问权限 > 父类 ReultSet不是一个集合&#xff0c;而是在使用jdbc(java database connectivity) 返回的一个结果集 enty中提供有参构造时&#xff0c; 未提供空参构…

MyBatis操作数据库

1.MyBatis是什么&#xff1f; MyBatis 是⼀款优秀的持久层框架&#xff0c;它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO&#xf…

【机器学习】吃瓜教程 | 西瓜书 + 南瓜书 (1)

文章目录 一、绪论1、什么是机器学习&#xff1f;2、基本术语3、假设空间4、归纳偏好5、发展历程 二、模型评估与选择A、一种训练集一种算法2.1 经验误差 与 过拟合2.2 评估方法a) 留出法b) 交叉验证法c) 自助法d) 调参与最终模型 2.3 性能度量a) 错误率与精度b) 查准率、查全率…

matlab dot()函数求矩阵内积,三维 ,多维 详解

matlab dot()函数求矩阵内积&#xff0c;三维 &#xff0c;多维 详解 Cdot(A,b,X)&#xff0c;这个参数X 只能取1,或者2。1 表示按列&#xff0c;2表示按行&#xff0c;如果没有参数。默认按列。 1&#xff09;按列优先计算 Cdot(A,B)dot(A,B,1)[a1*b1a4*b4 ,a2*b2a5*b5 ,a…

视频拼接得AI三维生成方案-开端(一)

想使用二维得图像生成三维得空间图像&#xff0c;英伟达有完整得方案&#xff0c;开源&#xff0c;但是三维拼接不一样&#xff0c;只需要二维&#xff0c;并且要实时&#xff0c;如何生成是我每天都在思考得东西。 cnn 提取特征器和自编码 在训练细胞神经网络时&#xff0c;问…

linux shell比较命令

1 比较运算 num1-eq num2 等于 [ 3 -eq $mynum ] num1-ne num2 不等于 [ 3 -ne $mynum ] num1-lt num2 小于 [ 3 -lt $mynum ] num1-le num2 小于或等于 [ 3 -le $mynum ] num1-gt num2 大于 [ 3 -gt $mynum ] num1-ge num2 大于或等于 [ 3 -ge $mynum ]。 filename1-nt filen…

linux上面修改u盘的名称

首先df-h显示文件系统磁盘空间使用情况 df -hFilesystem Size Used Avail Use% Mounted on /dev/sda1 39G 24G 13G 66% / tmpfs 990M 4.5M 986M 1% /dev/shm /dev/sda2 77G 62G 12G 85% /broncho /dev/s…