例如,在页面上,我有许多组件,许多组件数组。
如果我发送一些动作,则会重新呈现包含所有这些组件的整个页面。
但我不需要在页面上重新渲染未更改的项目/组件。
我只希望改变组件被重新渲染。我知道有shouldComponentUpdate()。但是在每个组件中使用shouldComponentUpdate编写逻辑并不是那么酷。也许有一些库,或者可能是一些替代方法?我听说过reactjs/reselect
,对于这些问题是否正确,或者如果我误解了,请说明重新选择哪些问题代表什么?那么在使用功能组件的情况下呢?
也许还有一些用于优化性能和控制哪些组件允许重建的库?
我还找到了https://github.com/seatgeek/react-infinite https://github.com/bvaughn/react-virtualized。这两个库是否也用于同样的目的?有什么区别?选择哪个?
还有一个简单的问题,假设我正在获取数据,它正在添加到数组中。 如何在每次获取新项目时仅渲染添加的项目,而不是整个数组?
答案 0 :(得分:0)
是的,你是对的。
我建议你考虑重新选择
通过重新选择,您可以记住数据并仅选择商店中用于应用程序某些部分的部分。
使用选择器,如果商店的选定部分发生变化,库将导致DOM重新呈现;但是,即使商店的某些部分已更改但未连接到所需数据,也不会。
答案 1 :(得分:0)
重新选择他一个很棒的库,这就是你需要的。唯一的缺点是如果在许多组件中使用选择器。您需要拥有每个选择器的实例才能将其设为私有。可以通过创建函数makeMapStateToProps来轻松完成,就像它们在这里显示https://github.com/reactjs/reselect#sharing-selectors-with-props-across-multiple-components一样。但我不喜欢为我需要的每个选择器制作它。所以我发现这个库是最后一个https://github.com/toomuchdesign/re-reselect的延伸。这个选择器使用相同的选择器,但您可以使用某些键进行缓存。