使用Redux维护无限滚动节点的最佳方法是什么?

时间:2015-11-24 08:49:34

标签: reactjs infinite-scroll redux

如果您有像Facebook这样的Feed,则需要在用户滚动时从视图中卸载帖子。我们使用无尽的滚动条来做到这一点。但是,这需要我们管理节点而不是React,这会导致同步问题。以前,这些节点是绑定到数据更改的Backbone视图。但是,当有很多帖子并且只有1个收到“喜欢”时,重要的是只能在无限卷轴中重新播放喜欢的帖子而不是其他人的100个,尤其是移动设备

保持无限滚动节点(与其父组件相对分离)的最佳方法是什么?我能想到的3个解决方案是......

  1. 计算父组件props中的数据更改(使用prevProps)并更新必要的子节点。 但是,这会执行O(n)深度比较。
  2. 使用事件总线并让每个子节点侦听应该导致其重新呈现的更改。 然而,事件总线是维持和迅速混乱的细微差别。
  3. 将每个子节点包装在容器的新实例中,并使用reselect为每个子节点记忆道具: let select = reselect.createSelector(state => state.var, var => ({ var })) let ReduxChildComponent = ReactRedux.connect(select)(ChildComponent) ... <Provider store={store}> <ReduxChildComponent /> </Provider> 所以道具只有在改变时才触发改变。 我不确定初始化其中许多内容时<Provider>的效率如何。
  4. (3)看起来对我来说是最好的解决方案。有没有人对此有更多的了解?

0 个答案:

没有答案