Снова выберите селектор на основе определенных записей объекта - PullRequest
0 голосов
/ 07 сентября 2018

Предположим, у меня есть такая структура данных:

"data": {
  "1": {
    "id": "1",
    "type": "Parent",
    "params": {...},
    "children": [ 10, 11 ]
  },
  "2": {
    "id": "2",
    "type": "Parent",
    "params": {...},
    "children": [ 12 ]
  },
  "10": {
    "id": "10",
    "type": "Child",
    "params": {...},
    "children": [ ]
  },
  "11": {
    "id": "11",
    "type": "Child",
    "params": {...},
    "children": [ ]
  }
  "12": {
    "id": "12",
    "type": "Child",
    "params": {...},
    "children": [ ]
  }
}

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

createSelector(
   (data, parent) => _.pick(data, item => item.type === "Child"),
   (data, parent) => parent.children
   (allChildren, parentChildren) => parentChildren.map(item => allChildren[item])
)

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

...