尚硅谷react课程-day02

2023-05-16

目录

1、函数式组件

2、原型链

3、 原型链查找机制

4、类式组件

5.利用react类定义虚拟dom方法对模块中HTML标签内容的修改,实现点击文字部分内容发生改变

5、类方法中的this指向问题

6、.bind()方法

7、对于react三大实力对象state状态机解释


1、函数式组件

 

通过.render渲染方法解析组建标签作为虚拟dom标签调用函数组件内容渲染到页面当中

2、原型链

JS中实例化的一个class类方法,实例化的对象身上会因为定义了类而生成prototype原型对象,通过构造函数实例化一个对象利用对象的prototype属性也能找到原型对象,找到以后可以利用其中的定义到proto上的方法去继承调用共有属性。

 

总结:类中的构造器不是必须要写的,要对实例进行一些初始化的操作,如添加指定属性时才写。如果A类继承了B类,且A类中写了构造器,那么A类构造器中的super是必须要调用的。类中所定义的方法,都放在了类的原型对象上,供实例去使用,利用extend方法去继承父父类中的构造器和方法,通过super去调用父类构造器中存在的值

3、 原型链查找机制

每当代码读取某个对象的某个属性时,都会执行一次搜索目标是具有给定名字的属性: 1.搜索首先从对象实例本身开始 2.如果在实例中找到了具有给定名字的展性,则返回该属性的值 3.如果没有找到,则继续沿原型链上寻的原型对象,在原型对象中查找具有给定名字的属性

4.如果在原型对象中找到了这个属性,则返回该属性的值,没有找到继续上寻到object对象,找到返回没找到就报错

4、类式组件

 

注意点:1、定义类式组件必须使用继承extend react.componet父类;2、返回值为虚拟dom标签,3、执行了ReactDOM.render(<MyComponent/>.......之后,发生了 React解析组件标签,找到了MyComponent组件。发现组件是使用类定义的,随后根据react库自动new出来该类的实例,并通过该实例调用到原型上的render方法。将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。

5.利用react类定义虚拟dom方法对模块中HTML标签内容的修改,实现点击文字2部分内容发生改变

 

1、 组件中render方法中的this为组件实例对象

2、state是组件对象最重要的属性, 值是对象(可以包含多个key-value的组合) 组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件),但其身上的state状态数据,不能直接修改或更新,只能通过继承react原型链上的Setstate方法来更改状态数据且其数据方法为object

3、创建的虚拟dom的方法中返回值的事件绑定调用的方法是利用jsx格式书写this.changeWeather是调用其类本身的changeWeather方法,,当我们不能直接调用类本身的方法因为类局部方法具有严格模式,我们采用在构造器中定义一个this.changeWeather方法,让其一开始的this指向就面对模块类,调用时就能直接查找到changeWeather方法

4、每一次点击就调用weather方法通过修改布尔值,重新调用render方法创建虚拟dom覆盖原来的标签

注意:

1、react将事件源中所有名字进行了修改:onclick-->onClick、onblue-->onBlue、mouseover-->mouseOver,类似驼峰命名法第二个单词首字母大写

2、类中局部定义的所有方法都开启了严格模式,当我们不使用类实例化对象的方法去调用时一定.log出undefined

3、利用构造器初始化state的状态,利用构造器解决类局部严格模式this指向丢失问题

5、类方法中的this指向问题

 

p1.study()通过实例化对象方法去查询p1实例化原型对象上的study方法输出结果,该this指向的是实例化的person,而利用x()方法查询赋值过来的函数时x的身上并无study且x()方法属于直接调用查询p1.study方法由于类局部严格模式将直接输出未定义

6、.bind()方法

是ECMAScript新增加的一个方法,主要作用是改变this指向。bind()是Function.prototype上的一个方法,所以调用它的只能是一个方法,bind会将调用它的方法里面的this指向

 

this.changeWeather = this.changeWeather.bind(this)右边的赋值意义为:首先this指向定义的类,类当中具有changeWeather方法然后改变类当中this指向将changeWeather方法中的this指向到当前类/组建模块当中

7、对于react三大实力对象state状态机解释

state表示react组件内部的一种状态,通过组件内的getInitialState函数,可以为组件的初始状态赋值,当组件的状态发生改变时,组件会重新渲染。官方对state的说明如下:

组件其实是状态机(State Machines) React 把用户界面当作简单状态机。把用户界面想像成拥有不同状态然后渲染这些状态,可以轻松让用户界面和数据保持一致。

React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。React 来决定如何最高效地更新 DOM。

但是state状态的修改并不会直接对页面内容进行渲染需要对setState进行更新,且更新是一种合并,不是替换。


 this.setState({isHot:!isHot})  

详细解释点击链接了解http://t.csdn.cn/dmH8n

第五点案例源码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>state</title>
</head>
<body>
	<!-- 准备好一个“容器” -->
	<div id="test"></div>
	
	<!-- 引入react核心库 -->
	<script type="text/javascript" src="../js/react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="../js/react-dom.development.js"></script>
	<!-- 引入babel,用于将jsx转为js -->
	<script type="text/javascript" src="../js/babel.min.js"></script>

	<script type="text/babel">
		//1.创建组件
		class Weather extends React.Component{
			
			//构造器调用几次? ———— 1次
			constructor(props){
				console.log('constructor');
				super(props)
				//初始化状态
				this.state = {isHot:false,wind:'微风'}
				//解决changeWeather中this指向问题
				this.changeWeather = this.changeWeather.bind(this)
			}

			//render调用几次? ———— 1+n次 1是初始化的那次 n是状态更新的次数
			render(){
				console.log('render');
				//读取状态
				const {isHot,wind} = this.state
				return <h1 onClick={this.changeWeather}>今天天气很{isHot ? '炎热' : '凉爽'},{wind}</h1>
			}

			//changeWeather调用几次? ———— 点几次调几次
			changeWeather(){
				//changeWeather放在哪里? ———— Weather的原型对象上,供实例使用
				//由于changeWeather是作为onClick的回调,所以不是通过实例调用的,是直接调用
				//类中的方法默认开启了局部的严格模式,所以changeWeather中的this为undefined
				
				console.log('changeWeather');
				//获取原来的isHot值
				const isHot = this.state.isHot
				//严重注意:状态必须通过setState进行更新,且更新是一种合并,不是替换。
				this.setState({isHot:!isHot})
				console.log(this);

				//严重注意:状态(state)不可直接更改,下面这行就是直接更改!!!
				//this.state.isHot = !isHot //这是错误的写法
			}
		}
		//2.渲染组件到页面
		ReactDOM.render(<Weather/>,document.getElementById('test'))
				
	</script>
</body>
</html>

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

尚硅谷react课程-day02 的相关文章

  • jQuery动态创建元素,通过元素操作修改购物车相关交互效果

    1 创建元素 语法 34 39 lt li gt lt li gt 34 动态的创建了一一个 lt li gt 2 添加元素 内部添加元素 生成之后 它们是父级关系 外部添加元素 生成之后 他们是兄弟关系 1 内部添加 把内容放入匹配元素内
  • jQuery 尺寸、位置操作

    1 width height 获取设置元素 width和height大小 console log 34 div 34 width 34 div 34 width 300 2 innerWidth innerHeight 获取设置元素 wid
  • jQuery侧边导航栏模块交互效果,导航栏点击事件、卷动事件、节流阀

    任务分析 xff1a 当我们滚动到模块 xff0c 就让电梯导航显示出来点击电梯导航页面可以滚动到相应内容区域核心算法 因为电梯导航模块和内容区模块 对应的当我们点击电梯导航某个小模块 xff0c 就可以拿到当前小模块的索引号 xff0c
  • jQuery学习周记

    周记 本周主要跟着教学视频制作了商城购物车案例 xff0c 页面电梯导航 xff0c 学习了利用jQuery操作尺寸 位置的操作 xff0c 这一部分就类似于JS中的BOM页面文档类型 xff0c 主要是通过对页面卷动事件进行一系列操作 其
  • jQuery自动触发事件与bootstrap/jQuery插件用法

    jQuery自动触发事件 有些事件希望自动触发 比如轮播图自动播放功能跟点击右侧按钮一致 可以利用定时器自动触发右侧按钮点击事件 xff0c 不必鼠标点击触发 语法 xff1a 1 element click 2 element trigg
  • 初识AJAX基础(一)

    1 初识AJAX 1 概要 google suggest A xff1a 通过发送请求到服务器上获取相关数据 B xff1a 发送方式 xff1a 通过URL 超链接 表单验证 C xff1a 将请求的数据发送给服务器获得相关数据 它是浏览
  • 使用nvm切换node方法,以及在nvm中的注意事项

    利用nvm随意下载nodejs版本 使用nvm去切换nodejs版本过程中出现的乱码情况分析 1 nvm安装路径错误导致nodejs下载路径有误 xff0c 无法正常打开 xff08 建议删除 xff0c 重新安装时使用默认路径安装 xff
  • nodejs中对es6语法规范讲解

    1 var的弊端及let关键字 1 var声明的变量有预解析 xff08 变量提升 xff09 xff0c 造成 逻辑混乱 xff0c 可以先使用 xff0c 后声明 2 var可以重复定义同一个变量 xff0c 逻辑错误 xff0c 第二
  • nodejs中解构语法

    1 解构语法 1 对象解构 存在意义 xff1a 简化代码 注意点 xff1a 1 在进行完全解构时 xff0c 属性值内花括号中的属性值的顺序可以随意颠倒 2 解构之后起重命名 let name itsName 61 obj 解构之后重命
  • 使用pt-query-digest分析mysql

    最近在看 高性能MySQL xff0c 作者们背靠Percona向我展示了以前从不知道的一些关于MySQL的知识以及各种分析优化工具 xff0c 比如这里要说的pt query digest 什么是pt query digest pt qu
  • node.js对es6语法学习

    1 es6模板字符串的使用 xff08 模板语法 xff09 console log 96 obj newname 是 obj name 的另外一个名字 xff0c 还有就是她今年18岁啦 96 es6 提供一个语法表示一个字符串 xff0
  • ES6中的箭头函数

    1 箭头函数 ES6 允许使用 箭头 xff08 61 gt xff09 简化函数的定义 注意点 xff1a 1 形参个数如果为1个 xff0c 可以省略小括号不写 2 如果函数体里面只有一个语句 xff0c 可以省略大括号不写 并且他会默
  • ES6this指向丢失问题+利用class类创建对象

    1 在dom操作中使用箭头函数可以规避this指向丢失问题 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 g
  • nodeJS继承中的子类constructor的写法+静态属性和静态方法+nodejs中的全局对象

    1 继承中的子类constructor的写法 xff1a 在ES6中使用继承时 xff0c constructor中必须调用super 方法 其本质是在调用父类的constructor方法 通过这样的方式来达到属性继承的效果 xff0c 解
  • ES6中process对象

    process对象 了解 console log process argv 返回一个数组 xff0c 前两个值是 node 命令所在位置 xff0c 被执行 JS 文件的路径 xff0c 若你执行命令时还有带有参数 xff0c 依次会填充到
  • nodeJS模块化开发

    1 模块的使用 1 1 为什么要模块化 了解 在计算机程序的开发过程中 xff0c 随着程序代码越写越多 xff0c 在一个文件里代码就会越来越长 xff0c 越来越不容易维护 为了编写可维护的代码 xff0c 我们把很多函数分组 xff0
  • nodejs中Buffer数据类型

    一 Buffer数据类型 JavaScript 语言自身只有字符串数据类型 xff0c 没有二进制数据类型 但在处理像文件流时 xff08 文件读写操作 xff09 xff0c 必须使用到二进制数据 因此在 Node js 中 xff0c
  • nodejs中fs文件系统内置模块

    一 fs文件系统模块 Node js 的 API 内置有两个模块 xff1a path 和 fs xff0c 我们使用 JavaScript 代码编写程序运行在 Node js 环境中就可以操作文件 1 1 同步读取文件信息 同步读取 xf
  • nodeJS中回调地域案例(Callback Hell)

    nodeJS中回调地域案例思考题 需求 xff1a 现在存在三个文件 1 txt 2 txt 3 txt 每个文件里面有一个字符 使用 xff1a fs readFile 异步 顺序读取 1 txt 2 txt 3 txt 里面的内容 xf
  • nodejs中对IP地址和端口的区分(基础了解)

    IP地址和端口的区分 ip地址 xff1a 标识网络上不同的设备 xff08 可连接网络的设备 xff08 电脑 手表 冰箱 智能设备等等 xff09 xff09 端口号 xff1a 标识同一台设备上的不同的网络进程 xff08 网络进程指

随机推荐

  • linux常用命令

    具体看自己的存放路径 重启Nginx usr local nginx sbin nginx s reload 重启PHP service php fpm restart linux查看目录下各个文件大小的命令 xff1a du h max
  • nodejs中http内置模块使用

    一 http模块 服务器获取数据原理 xff1a 前置知识点 xff1a IP地址 端口 http请求大致过程 先做粗略了解 xff0c 后面细讲 1 1 http核心模块的使用 四个步骤 xff1a 1 导入http模块 2 定义服务器程
  • nodeJS中npm简介与使用方法

    一 npm简介 npm 全称为 Node Package Manager xff0c 是一个基于 Node js 的包管理器 xff0c 也是整个 Node js 社区最流行 支持的第三方模块最多的包管理器 npm的初衷 xff1a Jav
  • nodeJS中利用第三方内置模块实现数字转大写功能

    一 案例制作 实现一个 xff0c 数字转大写的功能 如 xff1a 123 转 壹佰贰拾叁 在 nzh npm npmjs com 上查询npm文档引入第三方模块 找对应可能用上的包 xff0c 参考文档 xff0c 进行安装 xff0c
  • nodeJS编译环境下使用yarn工具的安装与使用方法

    一 yarn安装与使用 Yarn 是于 2016 年 10 月 由 Facebook Google Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 xff0c 旨在取代 npm 这种包管理工具 官网 xff1a Do
  • nodejs不支持ES6模块化规范的解决方案

    一 nodejs不支持ES6模块化规范的解决方案 在项目目录下新建src文件夹 xff0c src文件夹下新建m1 js模块和app js模块 xff1a m1 js模块中到处数据 xff1a export let name 61 34 n
  • yarn /nmp全局安装后,命令不生效

    yarn 全局安装后 xff0c 命令不生效 解决方法如下文章 nmp全局安装后 xff0c 命令不生效 xff08 通过链接查询解决办法 16条消息 安装Babel提示babel 不是内部或外部命令 xff0c 也不是可运行的程序 或批处
  • nodeJS中使用promise实现文件读取、写入的案例

    31 使用promise实现之前文件读取的案例 在引用util模块采用 xff1a 遵循常见的错误优先的回调风格的函数 xff08 也就是将 err value 61 gt 回调作为最后一个参数 xff09 xff0c 并返回一个返回 pr
  • nodeJS中对Promise模块介绍

    1 Promise 简介 Promise 是异步编程的一种解决方案 xff0c 比传统的解决方案 回调函数和事件 更合理和更强大 它由社区最早提出和实现 xff0c ES6 将其写进了语言标准 xff0c 统一了用法 xff0c 原生提供了
  • nodeJS中promise对象对结果简便输出办法(建议使用异步终极方案 async+await)

    一 promise对象利用all 方法实现简洁输出 const fs 61 require 34 fs 34 const path 61 require 34 path 34 const util 61 require 34 util 34
  • Http协议简介(底层原理讲解)

    一 Http协议简介 HTTP协议就是超文本传输协议 HyperText Transfer Protocol 通俗理解是浏览器和web服务器传输数据格式的协议 HTTP协议是一个应用层协议 HTTP协议是基于TCP协议的 xff0c 发送数
  • ThinkPHP代码生成器快速开发框架:ThinkPHP+VUE+APIdoc+Restful+Oauth2.0+代码生成器+系统基础功能(用户管理、菜单管理、角色管理、权限管理、字典管理、部门管理)

    Wedo快速开发框架 https github com weidong100 Wedo 根据数据表 xff0c 快速生成控制器 模型 VUE界面 接口文档 xff01 系统组成 xff1a PHP框架使用ThinkPHP5 xff0c 官网
  • Echarts3 主题设置

    前言 现在此感谢百度Echarts团队提供的这款优秀的开源产品 Echarts是一款原生js写的图表类库 xff0c Echarts能为我们打造一款数据可视化平台提供了良好的图表支持 在如今的前端开发中 xff0c 站点样式主题css 是要
  • 谷歌浏览器开发者工具的使用(掌握!)

    谷歌浏览器开发者工具的使用 xff08 掌握 xff01 xff09 元素 Elements 用于查看或修改HTML元素的属性 CSS属性 监听事件 断点等 控制台 Console 控制台一般用于执行一次性代码 查看JavaScript对象
  • nodeJS中ajax技术

    一 AJAX技术简介 AJAX 即 Asynchronous JavaScript and XML xff08 异步的 JavaScript 与 XML 技术 xff09 xff0c 指的是一套综合了多项技术的浏览器端网页开发技术 AJAX
  • 【无标题】

    一 使用ajax发送post请求 xff1a lt script gt let obtn 61 document getElementById 34 obtn 34 let odiv 61 document getElementById 3
  • jQuery 中 ajax 方法使用(测试get和post请求方式)

    一 jQuery 中 ajax 方法使用 async xff1a 默认设置下 xff0c 所有请求均为异步请求 contentType xff1a 发送信息至服务器时内容编码类型 xff0c 默认为 34 application x www
  • nodeJS中JWT身份认证使用方法与意义

    1 jwt认证机制的工作原理 xff1a 客户端登入提交账号密码 xff0c 服务器端验证通过将用户信息对象经过加密之后生成token字符串 xff0c 服务器进行第一次响应 xff0c 将生成的token字符串相应给客户端保存在local
  • 尚硅谷react课程-day01

    1 初识react 注意 1 引入库的顺序要先引入react核心库在引入react dom库 xff0c 最后引入babel库 2 script标签嵌套的JS代码的开始标签中要添加type 61 34 text babel 34 确保配置j
  • 尚硅谷react课程-day02

    目录 1 函数式组件 2 原型链 3 原型链查找机制 4 类式组件 5 利用react类定义虚拟dom方法对模块中HTML标签内容的修改 实现点击文字部分内容发生改变 5 类方法中的this指向问题 6 bind 方法 7 对于react三