key一般用在动态渲染dom节点的时候,我们给被渲染的节点的一个属性,因为react使用了虚拟dom,会通过diff比较差异,那么同级节点的tag标签都一样,属性都一样,可能会出现一些问题,警告,或者报错,使用key给同级节点,确保节点的唯一性,跟id不同,id是作用于全局下的唯一,而key只是在一个节点之下的子节点上
不是说写上key性能就会提高,主要是是因为不写key是将所有的文本内容替换一下,节点不会发生变化。
相反,写key就涉及到节点的增删,发现旧节点不存在了,将其删除,在新key在之前没有则插入,这就又增加性能的开销。
总结:
key是唯一的
key不能使用随机值。
使用index作为key值,对性能没有优化。
Class组件和函数组件有什么区别?使用场景?
类组件就是通过es6类的编写形式写组件,并且该类必须继承React.Component
如果想要访问父组件传递过来的参数可以通过this.props访问。
在组件必须实现render
方法在return
方法中返回React xml和React渲染的数据。
函数组件
顾名思义就是通过编写函数的方式实现一个组件,是react定义组件中最简单的方式。
针对两种组件的区别,有几个大方向。
1、编写形式
2、状态管理
3、生命周期
4、调用方式
5、获取渲染的值
1、函数组件又被称无状态组件,而类组件是有状态组件,具体点,函数组件不可以定义自己的数据状态,而类组件可以使用state定义数据状态。
2、函数组件不能使用声明周期函数,而类组件可以,因为函数组件是无状态组件,所以react16.8前的函数组件一般只用来做渲染。
3、class组件是由this对象,函数组件没有this对象
4、组件调用: class组件实例化后调用实例对象的render方法,函数组件直接执行函数。
5、class组件内部的话,render方法return返回渲染jsx模板,函数组件直接返回即可
总结:
两种总结都有各自优缺点,函数组件语法更短,更简单,使得它更容易开发,理解和测式。
而类组件会大量使用this让人感到困惑。