У меня есть следующие данные от API:
const data = {
id: 1,
name: 'myboard',
columns: [
{
id: 1,
name: 'col1',
cards: [
{ id: 1, name: 'card1' },
{ id: 2, name: 'card2' }
]
},
{
id: 2,
name: 'col2',
cards: [
{ id: 3, name: 'card3' },
{ id: 4, name: 'card4' }
]
},
]
}
Как видите, есть по сути 3 вложенных уровня. Верхний уровень содержит id
, name
и список columns
. Каждый column
содержит id
, name
и список cards
. Каждый card
имеет id
и name
.
Я хочу нормализовать данные для использования в Redux, как представлено здесь . Я использую normalizr , чтобы сделать это следующим образом:
const card = new schema.Entity('cards');
const column = new schema.Entity('columns', {
cards: [card]
});
const board = new schema.Entity('boards', {
columns: [column]
});
normalize(data, board)
Это приводит к следующему:
{
"entities": {
"cards": {
"1": {
"id": 1,
"name": "card1"
},
"2": {
"id": 2,
"name": "card2"
},
"3": {
"id": 3,
"name": "card3"
},
"4": {
"id": 4,
"name": "card4"
}
},
"columns": {
"1": {
"id": 1,
"name": "col1",
"cards": [1, 2]
},
"2": {
"id": 2,
"name": "col2",
"cards": [3, 4]
}
},
"boards": {
"1": {
"id": 1,
"name": "myboard",
"columns": [1, 2]
}
}
},
"result": 1
}
То, что я не могу понять, это то, как разделить каждый раздел (то есть: cards
, columns
, boards
) на два раздела, а именно byId
и allIds
в соответствии с Redux ссылка на статью выше.
По сути, это упрощает упорядочивание, сортировку и т. Д. В приложении React. Я использую последнюю версию нормализатора (3.2.4).