React中的组件以及组件实例的三大属性(详细类的复习)

2023-11-17

前言:我们为什么要模块化?是因为要复用编码,提高效率,react就是面向组件编程:

  1. 函数式组件 :函数不能中作为react的节点,就跟正常写函数一样
    在这里插入图片描述需要注意的是首字母需要大写,把函数封装为组件,所以把组件渲染到页面上时要使用组件的形式,因为开启了babel严格模式,所以此时的this指向window
    输出一下this
    请添加图片描述
  2. 类式组件 :这个较为常用
    一般分为3步:创建/继承类----创建实例------调用实例
    首先我们复习一下类
    请添加图片描述
    请添加图片描述

这就是创建了一个新的类叫Person,使用new关键字创建p1实例对象
类的继承
请添加图片描述
请添加图片描述

需要注意的是:子类在继承父类时,需要用extends关键字,在子类的构造器中,需要先super给父类需要继承属性,如果新属性匹配不上,则会undefined,同理,子类的子类继承父类也是如此,类了解了,那么类式组件就会简单很多
类式组件有三个必须:1 必须继承(无论是react内置类还是自己定义的类)
2 必须有render() 3 必须有return
理解思路:react发现组件使用类定义,随后new出来实例对象,并通过该实例调用到原型对象上的render()方法,所以你写的这个类,react会帮你创建实例对象,这个实例对象就与你的类同名请添加图片描述

请添加图片描述
return里面只有一个根节点,再写清楚点
请添加图片描述

请添加图片描述

组件实例的三大属性:state,props,refs

state(状态)

在构造器里面初始化状态,也就是初始化数据,因为初始化数据又不只一个,所以采用对象的方法去写
请添加图片描述

请添加图片描述

注意:state里面的数据不能直接被修改,要调用react的内置api去修改:setState

请添加图片描述
请添加图片描述

props

用于组件间通信
props是只读的,不能直接用来修改
类型限制:
Person.propTypes = {
name: PropTypes.string.isRequired,
sex: PropTypes.string,
age: PropTypes.number,
};
// 设置默认属性
Person.defaultProps = {
sex: “女”,
age: 18,
};

refs(避免过度使用refs)

操作React组件实例或者DOM元素的接口
1 给组件内部添加ref,就跟原生id一样 (不推荐)
2 函数式回调ref
3 createRef
myRef = React.createRef()
ref = {this.myRef}
调用后可以返回一个容器,该容器可以存储被ref标识的节点,需要注意的是,该ref是专人专用的
请添加图片描述
使用createRef()创建一个容器,然后把这个容器绑定在节点上面,就可以对节点操作,这个current不可以修改
this.myRef就是这个节点,里面有current这个属性

请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React中的组件以及组件实例的三大属性(详细类的复习) 的相关文章

随机推荐

  • navicat 绿化版

    navicat自带注册码 已经绿化 解压到任意目录就可运行 Navicat Premium 是一个可多重连接的数据库管理工具 它可让你以单一程序同时连接到 MySQL Oracle PostgreSQL SQLite 及 SQL Serve
  • 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型 常见的IO模型有四种 1 同步阻塞IO Blocking IO 即传统的IO模型 2 同步非阻塞IO Non blocking IO 默认创建的socket都是阻塞的 非阻塞IO
  • Python retrying模块

    参见 http segmentfault com a 1190000004085023 github源码 https github com rholder retrying
  • QT信号槽连接方式

    1 QT信号槽主要分两个连接方式 手动和自动 1 1 使用 connect 函数手动连接信号和槽 QObject connect sender SIGNAL signal receiver SLOT slot 自动 1 2 使用 lambd
  • 模板类与函数

    模板类与函数 普通函数 参数和返回值是模板类的实例化版本 函数模板 参数和返回值是某种的模板类 函数模板 参数和返回值是任意类型 支持普通类和模板类和其它类型 模板类可以用于函数的参数和返回值 有三种形式 普通函数 参数和返回值是模板类的实
  • 运用Cookie技术,统计访问次数以及上次访问时间。

    package servlet import java io IOException import java io PrintWriter import java text SimpleDateFormat import java util
  • mysql已经配置且正确_mysql8 参考手册-Connector/J应用程序进行故障排除-1

    16 1 当我尝试使用MySQL Connector J连接到数据库时 出现以下异常 SQLException Server configuration denies access to data source SQLState 08001
  • 【Web自动化测试——代码篇】常用方法——切换

    方法总览 多表单切换 当一个页面存在frame iframe表单嵌套时 WebDriver却只能在一个页面上对元素识别定位 但是对于表单上的嵌套元素无法直接定位 这时候该怎么办呢 Java 1 package JavaTest 2 3 im
  • PAT乙级1042 字符统计 (20 分)

    1042 字符统计 20 分 一 问题描述 请编写程序 找出一段给定文字中出现最频繁的那个英文字母 输入格式 输入在一行中给出一个长度不超过 1000 的字符串 字符串由 ASCII 码表中任意可见字符及空格组成 至少包含 1 个英文字母
  • 23.07.12作业

    思维导图 计算题
  • Provider提供者模式与策略模式的比较

    在这篇文章Provider和Factory的区别 作者提到 可以往工厂里面添加Provider 也就是说Factory里面可能存在着许许多多的Provider 而这些Provider将是最后Factory创建出结果的必要支撑 可以理解为提供
  • 开启硬件加速 导致花屏问题 OpenGlRenderer 0x506 解决办法

    150114 17 08 32 461 I dalvikvm heap 850 Grow heap frag case to 10 342MB for 2457616 byte allocation 150114 17 08 32 542
  • Python实现基于朴素贝叶斯的垃圾邮件分类

    听说朴素贝叶斯在垃圾邮件分类的应用中效果很好 寻思朴素贝叶斯容易实现 就用python写了一个朴素贝叶斯模型下的垃圾邮件分类 在400封邮件 正常邮件与垃圾邮件各一半 的测试集中测试结果为分类准确率95 15 在仅仅统计词频计算概率的情况下
  • 解决Debian系统自动更新软件包的问题

    解决Debian系统自动更新软件包的问题 参考文章 1 解决Debian系统自动更新软件包的问题 2 https www cnblogs com nkqlhqc p 11978565 html 备忘一下
  • android添加依赖出现问题

    出现该问题unspecified on project app resolves to an APK archive which is not supported as a compilation dependency的情形可能是 创建了两
  • hduoj 2010

    水仙花数 Problem Description 春天是鲜花的季节 水仙花就是其中最迷人的代表 数学上有个水仙花数 他是这样定义的 水仙花数 是指一个三位数 它的各位数字的立方和等于其本身 比如 153 1 3 5 3 3 3 现在要求输出
  • 文件系统---代码层次深入分析文件系统

    文件系统对用户来说 最重要的就是创建目录 创建文件 打开文件 和 文件读写 对通常的硬盘文件系统来说 涉及硬盘的读写和硬盘空间管理 从读写文件系统层一直到通用设备层再到硬盘驱动 为了简化 我们给出最简单文件系统 通过这个例子导入文件系统的概
  • uniapp 在app和小程序端使用webview进行数据交互

    结论 app端支持比较好可以做到实时传递 微信小程序支持比较差 小程序向url传参只能通过url url向app传参需要特定时机 后退 组件销毁 分享 复制链接 触发才能收到消息 以下是代码 app端 需要使用nvue
  • 数组建堆(heapify)

    将一个数组调整为最大堆 根据堆的性质 只要保证部分有序即可 即根节点大于左右节点的值 将数组抽象为一个完全二叉树 所以只要从最后一个非叶子节点向前遍历每一个节点即可 如果当前节点比左右子树节点都大 则已经是一个最大堆 否则将当前节点与左右节
  • React中的组件以及组件实例的三大属性(详细类的复习)

    前言 我们为什么要模块化 是因为要复用编码 提高效率 react就是面向组件编程 函数式组件 函数不能中作为react的节点 就跟正常写函数一样 需要注意的是首字母需要大写 把函数封装为组件 所以把组件渲染到页面上时要使用组件的形式 因为开