首页 > 解决方案 > Redux 结构建议

问题描述

我已经使用 Redux 构建了一些 React Native 应用程序,并且我传统上根据视图 / ui 对我的状态进行建模。我开始意识到这不是组织 Redux 状态的最佳方式。

通过最近的一些研究,我现在知道最好不要将重复数据存储在不同的 reducer 中,因为更新它们可能会变得乏味。最好将数据存储在对象中,键是 id,值是数据对象本身。

这对于在每个屏幕/页面上都相同的数据是有意义的,但是如果您的应用程序在不同的屏幕上以不同的方式使用数据怎么办?

例如:

我在主屏幕上有一个产品列表,在类别屏幕上有一个产品列表。两者都有分页,并且正在查看产品数据的不同子集。我可以在这里使用选择器方法,并且只在类别屏幕上选择属于特定类别的产品,但是如何跟踪每个产品的分页数据呢?

如果我在主屏幕上向下滚动并加载一堆产品数据,然后切换到类别屏幕,我将加载更多数据。

任何建议表示赞赏,谢谢!

标签: reactjsreact-nativereduxreact-redux

解决方案


您应该规范化您的数据(https://github.com/paularmstrong/normalizr),这样您就可以拥有如下的 redux 状态:

{
   home: [...list_of_id_products],
   category: [...list_of_id_products],
   data: [actual_array_of_objects]
}

那么你可以有单独的列表,所有链接到同一组数据


推荐阅读