React 笔记 父子组件传值

React父子组件传值

  • react中的组件:解决HTML标签构建应用的不足。
  • 使用组件开发的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里使用哪里引入。
  • 父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件;
  • 父子组件传值(react父子组件通信)
    • 父组件给子组件传值
      1. 在调用子组件的时候定义一个属性
      2. 子组件里面 this.props.msg

      说明:父组件可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件。还可以子组件给父组件传值

    • 父组件主动获取子组件的数据
      1. 调用子组件的时候指定ref的值
      2. 通过this.refs.header 获取整个子组件实例 (DOM(组件)加载完成以后获取)
    • 父组件给子组件传值
      • defaultProps:父组件传值中,如果父组件调用子组件的时候不给子组件传值,则可以在子组件中使用defaultProps定义的默认值
      • propType:验证父组件传值的类型合法性
        • 引入import PropTypes from ‘prop-type’;
        • 类.PropTypes={name:PropTypes.string}

          通过propTypes定义父组件传给子组件的类型

      • 都是定义在子组件里边的
react中没有提供专门请求数据的模块。但是我们可以使用任何第三方请求数据模块实现请求数据
  • axios https://github.com/axios/axios axios作者觉得jsonp不太友好,推荐使用CORS方式更为干净(后端运行跨域)
    • 安装axios模块 npm insttall axios --save
    • 在哪里使用就在那里引用 import axios from ‘axios’
    • 看文档使用
         //接口后台允许了跨域否则获取不到数据let api = 'http://xxx?a=getList&id=20'axios.get(api).then(function(response){console.log(response)}).catch((error)=>{console.log(error)})
      
  • fetch-jsonp https://github.com/camsong/fetch-jsonp
    • 安装 npm install fet-jsonp --save
    • import FetchJsonp from ‘fetch-jsonp’
    • 看文档使用
      let api = http://xxx?a=getList&id=20&callback=?FetchJsonp(api).then(function(response) {return response.json() }).then(function(json) {console.log('parsed json', json) }).catch(function(ex) {console.log('parsing failed', ex)})
      
  • 其他请求数据的方法也可以 自己封装模块用原生js实现数据请求也可以
远程测试APP接口
  • get请求
    • http://xxx?a=getList&id=20
  • jsonp请求地址的时候
    • http://xxx?a=getList&id=20&callback=?

React生命周期函数

组件加载之前,组件加载完成,以及组件更新数据,组件销毁。触发一系列的方法,这就是组件的生命周期函数

  • 组件加载的时候触发的函数:
    • constructor componentWillMount render componentDidMount(加载完成)
  • 组件更新时触发的函数:
    • shouldComponentUpdate(是否要更新数据,如果返回false则不执行更新) componentWillUpdate(组件将要更新时触发) render componentDidUpdate(组件数据更新完成)
  • 你在父组件里面改变props传值的时候触发的:
    • componentWillReceiveProps
  • 组件销毁的时候触发的函数:
    • componentWillUnmount (组件销毁的时候触发的生命周期函数)

react-Router

  • react-Router 可以让根组件动态的去挂载不用的其他组件。根据用户访问的地址动态的加载不同的组件
  • react路由的配置
    • 找到官方文档 https://reacttraining.com/react-router/web/example/basic
    • 安装 cnpm install react-router-dom --save
    • 找到项目的根组件引入 react-router-dom
      • import {BrowserRouter as Router,Switch,Route,Link} from “react-router-dom”;
    • 复制官网文档根组件里面的内容进行修改
      • exact表示严格匹配
         <Router><div><ul><li><Link to="/">Home</Link></li><li><Link to="/about">About</Link></li><li><Link to="/dashboard">Dashboard</Link></li></ul><hr /><Switch><Route exact path="/"><Home /></Route><Route path="/about"><About /></Route><Route path="/dashboard"><Dashboard /></Route></Switch></div></Router>
      
动态路由及get传值
  • 一个页面切换到另外一个页面进行传值
    • get传值
      • 获取get传值 this.props.location.search // 得到?aid=4
        • 解析?aid=4

          使用url模块解析url地址 在react里面使用URL模块需要安装url模块 cnpm install url --save

          • 使用url.parse(this.props.location.search,true)
          • aid=url.parse(this.props.location.search,true).query.aid
    • 动态路由
      • 获取动态路由的传值 this.props.match.params.aid
    • localStorage
  • 总结动态路由及get传值
    • 动态路由传值
      1. 动态路由配置
        (1)
      2. 对应的动态路由加载的组件里面获取传值
        (1) this.props.match.params
    • react get传值
      • this.props.location.search
react 解析html

react通过js实现路由跳转

  • 要引入Redirect
  • 定义一个flag
  • render里边判断flag,来决定是否跳转
  • 执行js跳转
    • 通过js改变flag状态
    • 之后就可以通过Redirect进行跳转
      • <Redirect to={{pathname:“/”}} />

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

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

相关文章

探究Logistic回归:用数学解释分类问题

文章目录 前言回归和分类Logistic回归线性回归Sigmoid函数把回归变成分类Logistic回归算法的数学推导Sigmoid函数与其他激活函数的比较 Logistic回归实例1. 数据预处理2. 模型定义3. 训练模型4. 结果可视化 结语 前言 当谈论当论及机器学习中的回归和分类问题时&#xff0c;很…

浅谈Python+requests+pytest接口自动化测试框架的搭建

框架的设计思路 首先要明确进行接口自动化需要的步骤&#xff0c;如下图所示&#xff1a; ​然后逐步拆解需要完成的工作&#xff1a; 1&#xff09;了解分析需求&#xff1a;了解接口要实现的功能 2&#xff09;数据准备&#xff1a;根据开发文档确定接口的基本情况&#x…

File.separator

File.separator代表系统默认文件目录分隔符&#xff0c;即我们所说的“斜线”。 在 windows 中 文件文件分隔符 用 ’ \ ’ 或者 ’ / ’ 都可以在 Linux 中&#xff0c;系统中分隔符为“/”&#xff0c;不识别 ’ \ ’ 例如&#xff1a; //在temp目录下建立一个test.txt文件…

Python + Appium框架原生代码实现App自动化测试

Step1&#xff1a;首先介绍下pythonappium的框架结构 如下截图所示 . (1)&#xff1a;apk目录主要放置待测app的apk资源&#xff1b; (2)&#xff1a;config目录主要放置配置文件信息&#xff0c;包含&#xff1a;数据库连接配置、UI自动化脚本中所需的页面元素信息及app启…

(C语言)判定一个字符串是否是另一个字符串的子串,若是则返回子串在主串中的位置。

要求&#xff1a; &#xff08;1&#xff09;在主函数中输入两个字符串&#xff0c;调用子函数cmpsubstr()判断&#xff0c;并在主函数输出结果。 &#xff08;2&#xff09;子函数的返回值为-1表示未找到&#xff0c;否则返回子串的位置&#xff08;起始下标&#xff09;。 …

Shell数组函数:数组(一)

一、数组简介&#xff1a; 变量&#xff1a;用一个固定的字符串&#xff0c;代替一个不固定字符串。数组&#xff1a;用一个固定的字符串&#xff0c;代替多个不固定字符串。 二、类型 普通数组&#xff1a;只能使用整数作为数组索引关联数组&#xff1a;可以使用字符串作为…

多表操作、其他字段和字段参数、django与ajax(回顾)

多表操作 1 基于对象的跨表查 子查询----》执行了两句sql&#xff0c;没有连表操作 2 基于双下滑线的连表查 一次查询&#xff0c;连表操作 3 正向和反向 放在ForeignKey,OneToOneField,ManyToManyField的-related_namebooks&#xff1a;双下滑线连表查询&#xff0c;反向…

Redis Hash数据类型

Redis Hash数据类型 几乎所有的主流编程语言都提供了哈希(hash)类型&#xff0c;它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中&#xff0c;哈希类型是指值本身又是一个键值对结构&#xff0c;形如key “key”&#xff0c;value {ffield1, value1 }, … {fieldN…

LoadBalancer将服务暴露到外部实现负载均衡purelb-layer2模式配置介绍

目录 一.purelb简介 1.简介 2.purelb的layer2工作模式特点 二.layer2的配置演示 1.首先准备ipvs和arp配置环境 2.purelb部署开始 &#xff08;1&#xff09;下载purelb-complete.yaml文件并应用 &#xff08;2&#xff09;查看该有的资源是否创建完成并运行 &#xff…

树莓派外接上显示器以后一直黑屏无画面显示

一般遇到这种情况都是因为没有强制支持热插拔引起的&#xff0c;先断电树莓派&#xff0c;确保显示器与树莓派连接正常&#xff0c;然后上电就可以正常显示了。 如果想要支持热插拔&#xff0c;可以修改配置文件。 sudo nano /boot/config.txt 修改如下配置 hdmi_force_hotpl…

GCN,GraphSAGE 到底在训练什么呢?

根据DGL 来做的&#xff0c;按照DGL 实现来讲述 1. GCN Cora 训练代码&#xff1a; import osos.environ["DGLBACKEND"] "pytorch" import dgl import dgl.data import torch import torch.nn as nn import torch.nn.functional as F from dgl.nn.pytorc…

Linux系统安装Python3环境

1、默认情况下&#xff0c;Linux会自带安装Python&#xff0c;可以运行python --version命令查看&#xff0c;如图&#xff1a; 我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了&#xff08;CtrlD退出python命令窗口&#xff09;。 2…

数据结构——二叉树(相关术语、性质、遍历过程)

遍历操作 二叉树的层次遍历-CSDN博客 二叉树的基本操作-CSDN博客 二叉树的先序遍历非递归实现-CSDN博客 后序遍历的非递归方式实现-CSDN博客 二叉树&#xff1a;已知先序中序求后序或者其他&#xff08;秒解&#xff09;-CSDN博客 因为之前发过一遍&#xff0c;我就不复制…

MES物料的动态批次管理漫谈

在制造企业中&#xff0c;原辅材料占产品制造总成本基本在60%以上&#xff0c;特殊材料加工企业可能达到80%以上&#xff0c;按“2/8管理原则”管理好物料就基本做好制造企业的成本管理&#xff0c;这也许是很多企业向“数字化转型”的一个主要原因&#xff0c;希望借助数字信息…

智能指针与动态内存

动态内存 new placement new 是 C 中的一种内存分配方式&#xff0c;它允许在给定的内存地址上构造对象&#xff0c;而不是在默认的堆上分配新的内存。这对于某些特殊的内存管理场景非常有用&#xff0c;例如在特定的内存池中分配对象。 C11 引入了 "new auto" 语法…

LiveGBS流媒体平台GB/T28181功能-概览中负载信息直播、回放、播放、录像、H265、级联查看负载会话列表

LiveGBS常见问题-概览中负载信息具体表示什么直播、回放、播放、录像、H265、级联等 1、负载信息2、负载信息说明3、会话列表查看3.1、会话列表 4、搭建GB28181视频直播平台 1、负载信息 实时展示直播、回放、播放、录像、H265、级联等使用数目 2、负载信息说明 直播&#x…

4.grid_sample理解与使用

pytorch中的grid_sample 文章目录 pytorch中的grid_samplegrid_samplegrid_sample函数原型实例 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; grid_sample 直译为网格采样&#xff0c;给定一个mask patch&#xff0c;根据在目标图像上的…

Http和WebSocket

客户端发送一次http请求&#xff0c;服务器返回一次http响应。 问题&#xff1a;如何在客户端没有发送请求的情况下&#xff0c;返回服务端的响应&#xff0c;网页可以得服务器数据&#xff1f; 1&#xff1a;http定时轮询 客户端定时发送http请求&#xff0c;eg&#…

2023经典软件测试面试题

1、问&#xff1a;你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一个bug&#xff0c;你应该怎样解决&#xff1f; 首先&#xff0c;将问题提交到缺陷管理库里面进行备案。 然后&#xff0c;要获取判断的依据和标准&#xff1a; 根据需求说明书、产品说明、设计…

AI浪潮下,非科班出身还有机会入行程序开发领域么?

前言 随着人工智能技术的快速发展和广泛应用&#xff0c;程序开发领域正迎来前所未有的挑战和机遇。但是对于非科班出身的个人而言&#xff0c;是否还有机会进入这个充满竞争的行业&#xff0c;成为一名程序员&#xff1f;那么本文就来聊聊AI浪潮下&#xff0c;分析当前程序员就…