react学习
1、export interface和 class区别
export interface 只是对一个东西的声明(不能具体的操作)
export class 导出一个类 类里面可有有参数 可以有一写函数 方法(干一些具体的事情)
路由:https://blog.csdn.net/hbiao68/article/details/89818135
2、使用shouldComponentUpdate生命周期函数以及PureComponent去避免类组件进行无用的重渲染,以及如何使用最新的React.memo API去优化函数组件的性能。
类组件:通过PureComponent
和shouldComponentUpdate来优化性能,
//1)类组件 通过判断state值是否变化,来决定是否重新渲染页面,返回true则重新渲染 shouldComponentUpdate(nextProps, nextState) { if (this.state.count === nextState.count) { return false } return true }
2)React在v15.5的时候引入了Pure Component组件。React在进行组件更新时,如果发现这个组件是一个PureComponent,它会将组件现在的state和props和其下一个state和props进行浅比较,如果它们的值没有变化,就不会进行更新。要想让你的组件成为Pure Component,只需要extends React.PureComponent
即可。如:
class TestC extends React.PureComponent
3)React.memo(...)
是React v16.6引进来的新属性。它的作用和React.PureComponent
类似,是用来控制函数组件的重新渲染的。React.memo(...)
其实就是函数组件的React.PureComponent
。
React.PureComponent是给ES6的类组件使用的
React.memo(...)是给函数组件使用的
React.PureComponent减少ES6的类组件的无用渲染
React.memo(...)减少函数组件的无用渲染
参考:https://segmentfault.com/a/1190000018563418
3、constructor
相当于对类进行一个new的操作,我们真正在引用的时候,使用的是这个类的实例。而我们现在在写的时候,不写上面的部分,并不是我们在运行中不再运行了,
而是不管我们写不写constructor,在new实例的时候,都会为我们补上constructor。
super中的props是否必要? 作用是什么??
可以不写constructor,一旦写了constructor,就必须在此函数中写super(),
此时组件才有自己的this,在组件的全局中都可以使用this关键字,
否则如果只是constructor 而不执行super()那么以后的this都是错的!!!
super关键字,它指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。
只有一个理由需要传递props作为super()的参数,那就是你需要在构造函数内使用this.props