React 相关面试选题
// 笔试应该给电脑,题目放在如 google doc,方便共享和回看
// 应该测试过时技术,和未来技术,以查看经验和兴趣
React 主要的特点(包括优点和缺点)有哪些?
- 使用 JSX
- 可复用组件
- 虚拟DOM(为什么要使用 vDOM,它是干什么的)
- 跨浏览器兼容
- 单向数据流
- 首屏渲染性能
- 使用服务端渲染(解决SEO和首屏渲染慢的问题)
- 不是一套完整的框架,还需要学习 router,数据管理的库
- 写高性能应用
React 组件的生命周期有哪些?
- WillMount
- DidMount
- WillReceiveProps
- shouldComponentUpdate
- WillUpdate
- DidUpdate
- WillUnMount
- DidCatch(v16)
// 红色为组件更新的流程
如何写一个高性能的 React 组件?
- 拆分组件,高阶组件(HOCs, 减少不需要更新的部分无效计算,高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件)
- 使用纯组件
- 使用 shouldComponentUpdate
- 使用组件缓存(?)
什么是函数式组件?
- 是一个函数
- 写法简单
- 可以写成纯函数(无状态,无副作用)
- 没有 this,不能直接访问 real DOM
hooks 代数效应
hooks mounted 和 生命周期 mounted 的区别:commit 后异步/layout 阶段后同步
diff 预设
- 层级不会变
- tag 类型不会变
- key 不变
setState 同/异步
- 传统模式,context
- 并发模式
三个阶段:
- schedule 小顶堆 fiber 树,调度程序为帧预留 5ms
- reconcile render 生成新 fiber 树
- commit 修改 DOM