React基础知识点(中)

简介: React基础知识点

React组件


目标

能够使用函数创建组件

能够使用class创建组件

能够给React元素绑定事件

能够使用state和setState()

能够处理事件中的this指向问题

React组件介绍

组件是React的一等公民,使用React就是在用组件

组件表示页面中的部分功能

组合多个组件实现完整的页面功能

特点:可复用、独立、可组合

组件的创建方式

函数创建组件

函数组件:使用JS的函数创建组件

**约定1:**函数名称必须以大写字母开头

**约定2:**函数组件必须有返回值,表示该组件的结构

如果返回值为null,表示不渲染任何内容

示例demo

编写函数组件


functionHello() {
return (
<div>这是第一个函数组件</div>    )
}


利用ReactDOM.render()进行渲染


ReactDOM.render(<Hello/>,document.getElementById('root'))


类组件(★★★)

使用ES6语法的class创建的组件

约定1:类名称也必须要大写字母开头

约定2:类组件应该继承React.Component父类,从而可以使用父类中提供的方法或者属性

约定3:类组件必须提供 render 方法

约定4:render方法中必须要有return返回值

示例demo

创建class类,继承React.Component,在里面提供render方法,在return里面返回内容


classHelloextendsReact.Component{
render(){
return (
<div>这是第一个类组件</div>        )
    }
}


通过ReactDOM进行渲染


ReactDOM.render(<Hello/>,document.getElementById('root'))


抽离成单独的JS文件(★★★)

思考:项目中组件多了之后,该如何组织这些组件?

选择一:将所有的组件放在同一个JS文件中

选择二:将每个组件放到单独的JS文件中

组件作为一个独立的个体,一般都会放到一个单独的JS文件中

示例demo

创建Hello.js

在Hello.js 中导入React,创建组件,在Hello.js中导出

import React from 'react'


exportdefaultclassextendsReact.Component {
render(){
return (
<div>单独抽离出来的Hello</div>        )
    }
}


在index.js中导入Hello组件,渲染到页面

importHellofrom'./js/Hello'ReactDOM.render(<Hello/>,document.getElementById('root'))


React事件处理(★★★)

事件绑定

React事件绑定语法与DOM事件语法相似

语法:on+事件名称=事件处理函数,比如 onClick = function(){}

注意:React事件采用驼峰命名法

示例demo

exportdefaultclassextendsReact.Component {
clickHandle(e){
console.log('点了')
    }
render(){
return (
<div><buttononClick= {this.clickHandle}>点我点我点我</button></div>        )
    }
}


小结

在React中绑定事件与原生很类似

需要注意点在于,在React绑定事件需要遵循驼峰命名法

类组件与函数组件绑定事件是差不多的,只是在类组件中绑定事件函数的时候需要用到this,代表指向当前的类的引用,在函数中不需要调用this

事件对象

可以通过事件处理函数的参数获取到事件对象

React中的事件对象叫做:合成事件

合成事件:兼容所有浏览器,无需担心跨浏览器兼容问题

除兼容所有浏览器外,它还拥有和浏览器原生事件相同的接口,包括 stopPropagation()和 preventDefault()

如果你想获取到原生事件对象,可以通过 nativeEvent 属性来进行获取

示例demo

exportdefaultclassextendsReact.Component {
clickHandle(e){
// 获取原生事件对象console.log(e.nativeEvent)
    }
render(){
return (
<div><buttononClick= {this.clickHandle}>点我点我点我</button></div>        )
    }
}


支持的事件(有兴趣的课下去研究)

Clipboard Events 剪切板事件


事件名 :onCopy onCut onPaste

属性 :DOMDataTransfer clipboardData

compositionEvent 复合事件


事件名: onCompositionEnd onCompositionStart onCompositionUpdate

属性: string data

Keyboard Events 键盘事件


事件名:onKeyDown onKeyPress onKeyUp

属性: 例如 number keyCode 太多就不一一列举

Focus Events 焦点事件 (这些焦点事件在 React DOM 上的所有元素都有效,不只是表单元素)


事件名: onFocus onBlur

属性: DOMEventTarget relatedTarget

Form Events 表单事件


事件名: onChange onInput onInvalid onSubmit

Mouse Events 鼠标事件


事件名:


onClickonContextMenuonDoubleClickonDragonDragEndonDragEnteronDragExitonDragLeaveonDragOveronDragStartonDroponMouseDownonMouseEnteronMouseLeaveonMouseMoveonMouseOutonMouseOveronMouseUp


Pointer Events 指针事件


事件名:


onPointerDownonPointerMoveonPointerUponPointerCancelonGotPointerCaptureonLostPointerCaptureonPointerEnteronPointerLeaveonPointerOveronPointerOut


Selection Events 选择事件


事件名:onSelect

Touch Events 触摸事件


事件名:onTouchCancel onTouchEnd onTouchMove onTouchStart

UI Events UI 事件


事件名: onScroll

Wheel Events 滚轮事件


事件名:onWheel


属性:


numberdeltaModenumberdeltaXnumberdeltaYnumberdeltaZ


Media Events 媒体事件


事件名:


onAbortonCanPlayonCanPlayThroughonDurationChangeonEmptiedonEncryptedonEndedonErroronLoadedDataonLoadedMetadataonLoadStartonPauseonPlayonPlayingonProgressonRateChangeonSeekedonSeekingonStalledonSuspendonTimeUpdateonVolumeChangeonWaiting


Image Events 图像事件


事件名:onLoad onError

Animation Events 动画事件


事件名:onAnimationStart onAnimationEnd onAnimationIteration

Transition Events 过渡事件


事件名:onTransitionEnd

Other Events 其他事件


事件名: onToggle

相关文章
|
4月前
|
Web App开发 存储 前端开发
React 之 Scheduler 源码中的三个小知识点,看看你知不知道?
本篇补充讲解 Scheduler 源码中的三个小知识点。
105 0
|
11月前
|
前端开发 JavaScript 测试技术
React知识点系列(5)-每天10个小知识
React知识点系列(5)-每天10个小知识
52 0
|
11月前
|
缓存 前端开发 JavaScript
React知识点系列(4)-每天10个小知识
React知识点系列(4)-每天10个小知识
22 0
|
11月前
|
前端开发 JavaScript 中间件
React知识点系列(3)-每天10个小知识
React知识点系列(3)-每天10个小知识
32 0
|
11月前
|
存储 缓存 前端开发
React知识点系列(6)-每天10个小知识
React知识点系列(6)-每天10个小知识
52 0
|
4月前
|
XML 资源调度 前端开发
React基础知识点
React基础知识点
71 0
|
4月前
|
缓存 监控 前端开发
这个知识点,是React的命脉
这个知识点,是React的命脉
|
4月前
|
XML 存储 前端开发
react部分知识点总结
react部分知识点总结
53 0
|
11月前
|
缓存 前端开发 JavaScript
React知识点系列(8)-每天10个小知识
React知识点系列(8)-每天10个小知识
43 0
|
11月前
|
缓存 前端开发 JavaScript
React知识点系列(7)-每天10个小知识
React知识点系列(7)-每天10个小知识
52 0