react入门面试题

1、 React有什么特点?

React的主要功能如下:

它使用虚拟DOM 而不是真正的DOM。
它可以进行服务器端渲染。
它遵循单向数据流或数据绑定。

2、React 中的 Key 值

1.为什么要有key值

相同的key不会重新渲染

key是一个字符串,用来唯一标识同父同层级的兄弟元素。当React作diff时,只要子元素有key属性,便会去原v-dom树中相应位置(当前横向比较的层级)寻找是否有同key元素,比较它们是否完全相同,若是则复用该元素,免去不必要的操作。

但是强烈不推荐用数组index来作为key。如果数据更新仅仅是数组重新排序或在其中间位置插入新元素,那么视图元素都将重新渲染

3、diff 算法

高效的diff算法能够保证进行对实际的DOM进行最小的变动

但是标准的的 Diff 算法复杂度需要 O(n^3)

这显然无法满足性能要求 要达到每次界面都可以整体刷新界面的目的

势必需要对算法进行优化

React里结合 Web 界面的特点做出了两个简单的假设

使得 Diff 算法复杂度直接降低到 O(n)

  1. 两个相同组件产生类似的 DOM 结构 不同的组件产生不同的 DOM 结构

  2. 对于同一层次的一组子节点 它们可以通过唯一的 id 进行区分

不同节点类型的比较

为了在树之间进行比较 我们首先要能够比较两个节点 在 React 中即比较两个虚拟 DOM 节点

当两个节点不同时 应该如何处理 这分为两种情况

  1. 节点类型不同

  2. 节点类型相同 但是属性不同

节点类型不同 直接删除原节点 插入新节点。

4、虚拟 DOM

虚拟 DOM (VDOM)是真实 DOM 在内存中的表示

UI 的表示形式保存在内存中 并与实际的 DOM 同步

这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤 整个过程被称为调和

5、react 渲染机制

React整个的渲染机制就是在state/props发生改变的时候 重新渲染所有的节点 构造出新的虚拟Dom 通过Diff算法进行比较 得到需要更新的地方在批量造作在真实的Dom上, 由于这样做就减少了对Dom的频繁操作 从而提升的性能

6、vue 和 react 区别

vue 上手简单 react 复杂一些

vue 的逻辑大部分写在