如何在Redux中存储一个排序集,并根据不同的键对其快速排序

How do I store a sorted set in Redux, and quickly sort it by various keys?

本文关键字:快速排序 排序 Redux 存储 一个      更新时间:2023-09-26

如何在Redux中存储排序集?

假设我有一个拥有大量数据的电子商务网站,但客户只拥有这些数据的一小部分。我将该数据存储为对象(键是id),并将主排序存储为数组。

问题是,当我添加越来越多的无序数据时,更新数组将花费O(n^2)并且很慢。

自然我会使用排序集,但我不确定如何在Redux中实现。

data = {
  <listingID>: <listingData>,
  ...,
  728: {
    name: 'Massive 1BR apartment in prime location',
    price: 4000,
    sqFeet: 1000,
    bedrooms: 1,
    location: 'East Village'
    datePosted: 1477496361164
  },
  1467: {
    name: 'Amazing 2BR steps from Times Square',
    price: 3950,
    sqFeet: 820,
    bedrooms: 2,
    location: 'Midtown',
    datePosted: 1427496322083
  },
  ...
}
order = [..., 728, 1467, ...]

在Redux中管理数据的标准方法是以"规范化"的形式存储数据,使用以id作为键的查找表。要跟踪排序,请使用id数组。这些数组可以在reducer中构造并保存在存储中,或者根据需要使用"选择器"函数派生。

我建议您阅读Redux文档中新的"Structuring Reducers"部分,该部分对这个主题进行了更详细的介绍。

我如何处理这个问题是在组件级别,使用本地状态和javascript的原生。sort(),而不是回到整个redux状态/reducer。我认为这是有效的,特别是如果你有不同的数据集在你的redux reducer与本地状态。

我认为有一些错误在他们的代码,但这是Facebook的数据表与排序功能:https://facebook.github.io/fixed-data-table/example-sort.html。