Например, у меня есть эти данные с сервера
[{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 ...}
Этот элемент должен быть первым в списке, но после закрепленных элементов.
Как отсортировать редуктор идентификаторов?
Тот, который приходит мне в голову, чтобы денормализовать данные, отсортировать их и снова нормализовать.Но это кажется "неправильным".
Может быть, есть способ без денормализации?Или другой лучший способ для этой ситуации.
Спасибо за помощь, ребята!