竹笋

首页 » 问答 » 环境 » 一名Vue程序员总结的React
TUhjnbcbe - 2022/2/13 15:14:00

点击上方“前端教程”,选择“星标”

每天前端开发干货第一时间送达!

一、生命周期

React生命周期图解[1]

我已经把这张图印在脑子里面了,没事就自己画画,中间发散一些自己的思考。u1s1,不知道react的生命周期命名为什么要怎么长~~~,小程序,vue的都比较短。毕竟使用的频率还是很高的,Hooks除外。

image.png1、constructor

constructor是类通用的构造函数,常用于初始化,算是生命周期的一环。React后来的版本中类组件也可以不写。

注意:在构造函数中使用时,super关键字将单独出现,并且必须在使用this关键字之前使用。super关键字也可以用来调用父对象上的函数。MDN说明[2]

classJJTestextendsReact.Component{//constructor写法constructor(props){super(props);this.state={count:0,};this.handleClick=this.handleClick.bind(this);}//直接声明state={count:0,};}2、getDerivedStateFromProps

触发时机:state变化、props变化、forceUpdate,如上图。

这是一个静态方法,是一个和组件自身"不相关"的角色.在这个静态方法中,除了两个默认的位置参数nextProps和currentState以外,你无法访问任何组件上的数据。

//初始化/更新时调用staticgetDerivedStateFromProps(nextProps,currentState){console.log(nextProps,currentState,"getDerivedStateFromProps方法执行");//返回值是对currentState进行修改return{fatherText:nextProps.text,};}3、render

render函数返回的JSX结构,用于描述具体的渲染内容,render被调用时,它会检查this.props和this.state的变化并返回以下类型之一:

React元素。通常通过JSX创建。例如,

会被React渲染为DOM节点,会被React渲染为自定义组件,无论是

还是均为React元素。

数组或fragments。使得render方法可以返回多个元素。欲了解更多详细信息,请参阅fragments文档。

Portals。可以渲染子节点到不同的DOM子树中。欲了解更多详细信息,请参阅有关portals的文档

字符串或数值类型。它们在DOM中会被渲染为文本节点

布尔类型或null。什么都不渲染。(主要用于支持返回test的模式,其中test为布尔类型。)

注意:如果shouldComponentUpdate()返回false,则不会调用render()。

Hooks不需要写render函数。要注意的一点是,即使Hooks不需要写render,没有用到React.xxx,组件内还是要importReactfrom"react";的(至于原因,后续深入Hooks学一下,大哥们也可以解释下)。React官方也说了,后续的版本会优化掉这一点。

4、
1
查看完整版本: 一名Vue程序员总结的React