1. Component和PureComponent的区别?
PureComponent自带通过props和state的浅对比来实现 shouldComponentUpate(),而Component没有。
但如果包含比较复杂的数据结构,可能会因深层的数据不一致而产生错误的否定判断,导致界面得不到更新。
因为js使用的是引用赋值,新的对象简单引用了原始对象,改变新对象虽然影响了原始对象,但对象的地址还是一样,使用===比较的方式相等。而在PureComponent中,会被判定prop相等而不触发render()。
解决方式:
(1)避免使用值可能会突变的属性或状态,而是使用副本来返回新的改变
(2)使用Immutable.js
2. Umi.js(乌米)
- 什么是Umi.js?
umi,中文可发音为乌米,是一个可插拔的企业级 react 应用框架。你可以将它简单的理解为一个专注性能的类 next.js 前端框架,并通过约定、自动生成和解析代码等方式来辅助开发,减少我们开发者的代码量。
-
为什么使用Umi.js?
我们做react开发的时候会不会遇到以下问题?
1)项目做大的时候,开发调试的启动和热更新时间会变得很长。
2)大应用下,网站打开很慢,有没有办法基于路由做到按需加载。
3)dva的model每次都要手写载入,能否一开始就同项目初始化好? -
乌米其它优势:
开箱即用,内置 react、react-router 等
类 next.js 且功能完备的路由约定,同时支持配置的路由方式
完善的插件体系,覆盖从源码到构建产物的每个生命周期
一键兼容到 IE9
完善的 TypeScript 支持
与 dva 数据流的深入融合
2. dva
Dva = React-Router + Redux + Redux-saga
dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。