因此,与直接操作dom相比,虚拟dom和diffing使React更快,但我读到,如果不对组件进行模块化,则会触发不必要的渲染,因为它将重新渲染所有父组件即使用户界面未更改,它也从中获得了道具。这是React最大的性能缺陷之一。
从最极端的角度来看,如果我设计我的应用程序时没有子组件,并且每个子组件都保持自己的状态,则可以避开此性能问题,但几乎无法维护。
如果我创建某种高阶组件(如redux的connect),它将包装我的整个主要组件(包含我的所有组件),并为每个仅包含道具的单个组件递归创建一个状态片,该怎么办?需要吗?这样,它可以保留类似redux的奇异性原理和代码可维护性,同时避免不必要的重新渲染。
我在想它可能必须与redux结合使用,以便在某个地方一次访问所有道具,但是也许可以不使用它。通过这种方式,可以轻松实现代码拆分和延迟加载组件(也许可以设置并发服务器请求的最大数量以减少开销)。我会记住道具,以减少请求的数量。
我当时认为它是副项目的潜在想法,但我不知道它是否可行或是否解决了不必要的渲染问题。我认为它是某种可以在redux之上使用的npm库。