React 面试复习

234 阅读2分钟

预习

基本知识

JSX 知识

事件

在constructor 里面写 bind 更好,在render里面写会每次都bind一次,在constructor中只 bind 一次

方法设置为箭头函数也可以

事件不是原生的 event,是合成事件的 event,原生是 MouseEvent,

传递参数和 vue 一样 最后一个参数是事件

表单

受控组件,组件受 state 里面的某个值控制

模拟 v-model 使用 onChange 改变数值,用 value 绑定改变后得值

父子组件通讯

数据放在高层组件中,底层组价中进行通讯

传事件

setState

不可变值

函数组件,默认没有 state

使用 state 时,state 是一个新的值,当使用的时候再进行操作

对数组进行操作,使用不可变值,

setState 是同步还是异步

setState 合并会合并 state

生命周期

基础复习

高级特性

函数组件

如果无关生命周期和 state 的改变,建议使用函数式组件

非受控组件

自己内部的值不受钩子事件的影响,拿组件里面的值时,通过 ref 来获取

  1. 在 constructor 里面定义一个 ref 的变量 this.xxxref=React.createRef()
  2. 在标签上绑定声明的 ref 变量
  3. 通过 this.xxxref.current 获取当前节点

Portals

类似于 v-slot

当需要将子组件放在最外层

context

产生

管理

消费

异步加载组件

性能优化

性能优化相对于 react 更加重要

setState 强调的是不可变值

不写不可变值有些地方会踩坑

shouldComponentUpdate

shouldComponentUpdate 默认返回的是 true

React 默认: 父组件有更新,子组件则无条件也会更新

性能优化对于 React 更加重要

shouldComponentUpdate 一定要每次都用吗?—— 需要的时候才优化

PureComponent 和 memo

immutable.js

React 高阶组件

Render Props(vue 不能用)

Redux

React-router

原理

函数式编程

vdom和diff

JSX本质是什么

通过 createElement 创建元素,第一个参数是元素或者组件,第二个是属性,第三个是子元素,返回的值是一个 vNode 节点,然后会通过 patch 进行比对渲染

合成事件

setState 和 batchUpdate

观察是否处于批量更新的机制中

isBatchingUpdates 是 true 就是批量更新,false 就是非批量更新

transaction 事务机制

执行 perform 时,之前会在初始化

组件渲染和更新的过程

setstate 如果是异步更新

fiber 如何优化性能

react 演练