前言
今日早读文章由
司徒正美分享。正文从这开始~~
性能优化是一个系统性的工程,如果只看到局部,引入算法,当然是越快越好;但从整体来看,在关键点引入缓存,可以秒杀N多算法,或另辟蹊径,探索事件的本质,可能用户要的并不是快……
React16启用了全新的架构,叫做Fiber,其最大的使命是解决大型React项目的性能问题,再顺手解决之前的一些痛点。
痛点主要有如下几个:
组件不能返回数组,最见的场合是UL元素下只能使用LI,TR元素下只能使用TD或TH,这时这里有一个组件循环生成LI或TD列表时,我们并不想再放一个DIV,这会破坏HTML的语义。
弹窗问题,之前一直使用不稳定的unstable_renderSubtreeIntoContainer。弹窗是依赖原来DOM树的上下文,因此这个API第一个参数是组件实例,通过它得到对应虚拟DOM,然后一级级往上找,得到上下文。它的其他参数也很好用,但这个方法一直没有转正。。。
异常处理,我们想知道哪个组件出错,虽然有了ReactDevTool,但是太深的组件树查找起来还是很吃力。希望有个方法告诉我出错位置,并且出错时能让我有机会进行一些修复工作
HOC的流行带来两个问题,毕竟是社区兴起的方案,没有考虑到ref与context的向下传递。
组件的性能优化全凭人肉,并且主要集中在SCU,希望框架能干些事情,即使不用SCU,性能也能上去。
解决进度16.0让组件支持返回任何数组类型,从而解决数组问题;推出createPortalAPI,解决弹窗问题;推出