位置: 编程技术 - 正文

React.js入门学习第一篇(react基础入门)

编辑:rootadmin

推荐整理分享React.js入门学习第一篇(react基础入门),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react基础教程,react入门到精通,reactjs教程视频,react新手教程,react入门视频教程,react入门视频教程,react入门视频教程,react.js教程,内容如对您有帮助,希望把文章链接给更多的朋友!

一、JSX介绍

①定义

JSX=JavaScript XML,是一种在React组件内部构建标签的类XML语法。React在不使用JSX的情况下一样可以工作,但是使用JSX可以提高组件的可读性,增强JS语义,结构清晰,抽象程度高,代码模块化。因此推荐在React中使用JSX。

②特点

1、元素名首字母大写

2、符合嵌套规则

3、可以写入求值表达式

4、驼峰式命名

5、不能使用javascript原生函数的一些关键词,如for和class。需要替换成htmlFor和className

③使用方法

1、使用动态值:JSX将两个花括号之间的内容{...}渲染为动态值,花括号指明了一个javascript上下文环境,花括号里面可以是一个变量,也可以是函数。 例如:

2.注释:首先,在子节点中注释要用大括号包裹起来,然后就可以单行注释/**/,也可以多行注释//。

3.使用CSS内联样式

4.使用条件判断

④非DOM属性介绍

JSX中有3个非DOM属性,分别是:dangerouslySetInnerHTML、ref、key。

dangerouslySetInnerHTML:在JSX中直接插入HTML代码,但是如果能避免使用这个属性则尽量避免使用。

不合时宜的使用 innerHTML 可能会导致 cross-site scripting (XSS) 攻击。 净化用户的输入来显示的时候,经常会出现错误,不合适的净化也是导致网页攻击 的原因之一。在彻底的理解安全问题后果并正确地净化数据之后,生成只包含唯一 key __html 的对象,并且对象的值是净化后的数据。例如:

ref:父组件引用子组件,你可以通过在属性中设置期望的引用名来定义一个引用。例如:

key:是一个可选的唯一标识符,通过给组件设置一个独一无二的键,并确保它在一个渲染周期中保持一致,使得React能够更只能地决定应该重用一个组件还是销毁并重建一个组件,进而提高渲染性能。例如:

二、React组件生命周期详解

组件本质上就是状态机,输入确定,输出一定确定。状态和结果一一对应,从而使程序变得直观。状态发生转换时会触发不同的钩子函数,从而让开发者有机会做出响应。可以用事件的思路来理解状态,但是事件与事件之间互相独立,但是不同状态之间可能会互相影响。组件的所有状态结合起来就成了组件的生命周期。即:初始化阶段->运行中阶段->销毁阶段。

不同生命周期内可以自定义的函数初始化阶段:①getDefaultProps:获取默认属性,只调用一次,是在createClass之后调用的。实例之间共享引用②getInitialState:初始化每个实例的特有初始化状态③componentWillMount:mout就是装载的意思,这个方法的意思就是说组件即将被装载到页面中,也是render之前最后一次修改状态的机会④render:组件在render函数生成虚拟节点,最后由react将虚拟节点变成真正的节点渲染到页面上。只能访问this.props和this.state,只有一个顶层组件,最好不要修改状态和DOM输出。⑤componentDidMount:组件被装载后才会被调用,也就是说调用这个方法的时候,组件已经被渲染到了页面上,这个时候可以修改DOM这五个函数的执行顺序就是从上到下的。需要注意的是getDefaultProps只会在组件的第一个实例被初始化的时候被调用,也就是说第二个实例之后都是从getInitialState开始调用。同一个组件的所有实例的默认属性都是一样的。主要测试代码:

运行结果:

运行中阶段:

React.js入门学习第一篇(react基础入门)

①componentWillReceiveProps:这个函数在组件即将接收到属性时触发的,或者是父组件的属性发生变化时,属性在传送到组件之前,开发者有机会通过这个函数去处理属性。比如修改,更新内部状态等。②shouldComponentUpdate:当组件接收到新属性或者新状态的时候触发的。这个是一个疑问函数,也就是说我们可以告诉react不去更新某个组件。因为有时候属性或者状态并不会导致组件发生更新。在组件不需要更新的情况下,手动使shouldComponentUpdate返回false,这样react就不需要再经过render和diff算法去判断是否要更新,从而提高性能。③componentWillUpdate:render触发之前触发,更新组件,不能修改属性和状态④render:组件在render函数生成虚拟节点,最后由react将虚拟节点变成真正的节点渲染到页面上,只能访问this.props和this.state,只有一个顶层组件,最好不要修改状态和DOM输出。⑤componentDidUpdate:render之后,真正的DOM被渲染之后调用备注:这五个函数的执行顺序也是从上到下的。这个的测试代码已上传至: 销毁阶段:①componentWillUnmount:这个函数在销毁操作真正执行之前调用,给开发者最后的机会进行一些清理工作。

三、属性、状态的含义和用法

属性的含义:props=properties,属性是不可以由组件自己进行修改的,组件的属性是由父组件传递进来的。属性的用法:一)、键值对

二)、展开定义(个人认为就是对象式定义)

这样定义的话,理论上使用应该是one={props.one}这样调用,但是这样写起来比较繁琐,而且如果数据被修改,就需要对应修改相应的赋值,并且无法动态地设置属性,所以react中添加了一种展开语法:<Hello {...props}/> //也就是三个点加上对象名称。这样使用展开语法,react就会自动把对象中的变量和值当作是属性的赋值,所以Hello实际上就拿到了one、two两个属性,如果没有三个点的话,Hello拿到的实际上就是props对象,使用的时候还需要自己从中取出变量和值三)、调用react提供的setProps()函数(几乎不用)

状态的含义:state,状态是由事物自行处理、不断变化的状态的用法:getInitialState:初始化实例的状态setState:更新组件状态,一旦更新了状态,那么就会触发diff算法,检查内容是否发生变化,若有变化则更新组件,否则就不用。

属性和状态对比相似点:都是纯JS对象、都会触发render更新、都具有确定性。

属性和状态区分:组件在运行时需要修改的数据就是状态

四、React中事件的用法事件处理函数:React绑定事件处理器的方法和HTML语法非常类似,所有的事件在命名上与原生的javascript规范一致,并且会在相同的情境下触发。编写函数handleClick:function(){...}绑定onClick={this.handleClick}

各类事件详细说明:①移动设备上的触摸事件:onTouchCancel、onTouchEnd、onTouchMove、onTouchStart ②键盘类事件:onKeyDown、onKeyPress、onKeyUp③剪切类事件:onCopy、onCut、onPaste ④表单类:onChange//内容变化即触发、onInput//输入框、onSubmit//禁止表单默认跳转行为⑤事件:onFocus、onBlur ⑥UI元素类:onScroll⑦鼠标滚动事件:onWheel⑧鼠标类型:onClick、onContextMenu//右键菜单、onDoubleClick //双击、onMouseDown、onMouseEnter、onMouseLeave、onMouseMove、onMouseOut、onMouseOver、onMouseUp⑨拖拽事件:onDrop、onDrag、onDragEnd、onDragEnter、onDragExit、onDragLeave、onDragOver、onDragStart事件对象介绍使用方法:就是在编写事件对象处理函数的时候,添加一个参数。拿到这个对象之后,就通过对象的属性来可以获取一些信息。例如:

示例中,event就是事件对象,event.target就是事件对象的属性,就是对应的DOM元素,拿到这个元素之后再获取它的值。事件对象属性通用属性:

其他不同类型的事件有不同的属性,简单了解一下

知道了事件的一些属性,我们就可以很方便地在React中获取这些属性,进行一些逻辑的处理,实现一些复杂的业务功能、页面效果等。

例如:我们可以利用鼠标事件属性,实时显示鼠标在某个区域的坐标:

x组件协同使用的定义:组件的协同本质上就是对组件的一种组织、管理方式。组件协同使用的目的:逻辑清晰、代码模块化、封装细节、代码可复用。组件协同使用的方式:①组件嵌套使用:也就是说,用一个父组件把子组件包裹起来,本质就是父子关系。如下图描述:

实例代码:

父子组件之间的通信:父组件->子组件:通过属性,父组件把数据通过属性来传递给子组件子组件->父组件:本质上,子组件不能向父组件通信。但是可以间接地通过触发事件来通信,也就是委托。嵌套组合缺点:父子关系的具体实现需要经过深思熟虑,贸然编写将导致关系混乱、代码难以维护无法掌握所有细节,使用者只知道组件用法,不知道实现细节,遇到问题难以修复②Mixin:也就是可以把相同的代码抽象出来,封装成一个函数,然后再调用。

Mixin的目的:横向抽离出组件的相似代码相似概念:面向切向面编程、插件实例代码:

mixin相当简单,它们就是混合进组件类中的对象而已。React在这方面实现得更加深入,它能防止静默函数覆盖,同时还支持多个mixin混合。但是这些功能在别的系统中可能引起冲突。例如:

这样在mixin和组件类中同时定义了getInitialState方法,得到的初始state是{a:1,b:2}.如果mixin中的方法和组件类中的方法返回的对象中存在重复的键,React会抛出一个错误来警示这个问题。

六、React中的双向绑定

React创立的理念跟angular那些框架就是不同的,React是单向数据绑定的。那么怎么实现像angular那样的双向绑定效果呢?看代码:

效果图(没有CSS样式,有点不优雅,见谅):

标签: react基础入门

本文链接地址:https://www.jiuchutong.com/biancheng/375995.html 转载请保留说明!

上一篇:基于React.js实现原生js拖拽效果引发的思考(react jss)

下一篇:JavaScript 不支持 indexof 该如何解决(JavaScript不支持ie)

  • 补提企业所得税怎么做账
  • 金税三期反映出来的是前几年的问题
  • 员工出差车费如何报销
  • 无形资产摊销年限可以变更吗
  • 银行收取的账户管理费是什么费用
  • 一般纳税人销售自己使用过的汽车
  • 工资用现金发放有风险吗?
  • 外来原始凭证包括哪些入库单
  • 出口货物的报关时限为装货的24小时以前
  • 科目余额表解析
  • 收入比开票多如何处理好
  • 购进货物用于在建工程要交增值税吗
  • 小微企业城建税优惠政策2023
  • 小规模纳税人第一次网上报税
  • 财产保险合同印花税计税依据
  • 应付账款保理是什么意思
  • 增值税金内部结算方式
  • 出口货物不用退税吗现在
  • 贴标企业
  • 长期股权投资的明细科目有哪些
  • 增值税发票三个点
  • 一般纳税人出售固定资产税率
  • 轿车计提折旧
  • 外省农村户口可以迁到外省农村吗
  • 为什么查询发票显示查无此票
  • 公司内部银行往来款会计分录
  • 公司买珠宝会计分录
  • 专项储备期末有余额吗
  • 向人力资源公司辞职怎么说
  • 增值税进项留抵退税的账务处理
  • 长期借款和短期借款时间
  • 企业旅行社名字怎么取
  • 什么是租赁公司的主营业务
  • 机票电子普票不可以报销么
  • 微软预购
  • s24evmon.exe - s24evmon是什么进程 有什么用
  • 电脑bios错误怎么办
  • 无偿赠送的货物需要缴纳印花税吗
  • 从银行提取现金准备发放工资
  • 基于php的系统
  • swiper.js常用功能
  • input输入框非空验证
  • web2的核心理念
  • 收到房租怎么做账务处理
  • 生活服务业纳税义务发生时间
  • 如何用ps做半圆
  • 有限公司也可以向股东核发股票
  • 抵扣以前年度进项税
  • 武汉营业执照注销流程
  • 结转本年利润要算期初余额吗
  • 不符合资本化的长期借款利息计入什么科目
  • 电子商业承兑汇票的承兑有以下几种方式
  • 公司进行债券投资的缺点
  • 计提福利费的会计分录
  • 小额贷款在银行需要什么条件
  • 工资社保医保计算
  • 新办企业在建期间账务处理
  • 公司的在建工程入账会计分录没有付款
  • 未支付房租怎么做账
  • 错帐的查找方法
  • 劳务公司的劳务税是多少
  • 培训费产生的差额怎么算
  • 无票收入怎么写分录
  • 私营公司固定资产怎么查
  • mysql查找指定元素的位置
  • 内连接 sql
  • centos 安装
  • winhlp32.exe - winhlp32是什么进程
  • 如何设置滑屏方式
  • win10新版cortana
  • windows10运用
  • JavaScript驾驭网页-DOM
  • redhat linux8
  • 基于flask框架
  • python可变参数和不可变参数
  • python tkinter tabview
  • JavaScript中的数据类型分为两大类
  • 杭州二套房契税新政策2023年
  • 天津市税务总局现任领导
  • 主管局长和分管局长谈心谈话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设