Каков наилучший способ сортировки нормализованных данных? - PullRequest
2 голосов
/ 26 марта 2019

Например, у меня есть эти данные с сервера

[{id: 1, pinned: true, date: 14.03.2019 ... }, 
 {id: 8, pinned: true, date: 20.02.2019 ...},
 {id: 2, pinned: false, date: 26.03.2019 ...},
 {id: 21, pinned: false, date: 25.03.2019 ...}, ...];

Эти данные уже отсортированы по дате, но закрепленные элементы всегда сверху.

После нормализации данных с помощью normalizr.js у меня будетмой объект сущностей и массив идентификаторов, такие как:

entities: { 1:[{id: 1, pinned: true, ... }, 8: { id: 2, pinned: true, ...}, ...},
ids: [1, 8, 2, 21 ...];

И я буду хранить его в разных редукторах.

для рендеринга этих данных, которые я использую:

const List = (props) => {
  return (
    <ul>
      {props.ids.map(id =>
        <Item id={id} key={id} />
      )}
    </ul>
  )
}
connect((state) => { ids: state.ids })(Item);

const Item = (props) => (
  <li>{props.contact.id}</li>
);

connect((state, ownProps) => { contact: state.entities[ownProps.id] })(Item)

Но чтоесли с сервера я получу элемент типа

{id: 30, pinned: false, date: 27.03.2019 ...}

Этот элемент должен быть первым в списке, но после закрепленных элементов.

Как отсортировать редуктор идентификаторов?

Тот, который приходит мне в голову, чтобы денормализовать данные, отсортировать их и снова нормализовать.Но это кажется "неправильным".

Может быть, есть способ без денормализации?Или другой лучший способ для этой ситуации.

Спасибо за помощь, ребята!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...