Стоит ли использовать библиотеку перевыбора и делать селекторы для каждого предмета в моем магазине, даже если все, что я делаю, - это доступ к предметам из магазина - PullRequest
0 голосов
/ 18 сентября 2018

Я нахожусь в ситуации, когда мой магазин выглядит примерно так

{
  itemA: {val1, val2, val3},
  itemB: {val1, val2, val3},
  ....
}

в моем файле выбора у меня есть что-то вроде этого

const getItemAobject(state) => return state.itemA;
const getItemBobject(state) => return state.itemB;

....

const selectItemA = createSelector([getItemAobject], (itemAobject) => itemAobject);
const selectItemB = createSelector([getItemBobject], (itemBobject) => itemBobject);

наконец, в mapStateToProps у меня есть

mapStateToProps(){
 {
  itemA: selectItemA(state)
  itemB: selectItemB(state)
 }
}

В этом сценарии, где мои селекторы не делают ничего особенного, я должен использовать повторный выбор? Я мог бы так же легко сделать это

mapStateToProps(){
 {
   itemA: state.itemA
   itemB: state.itemB
 }
}

В чем преимущество использования селекторов, если они есть?

1 Ответ

0 голосов
/ 18 сентября 2018

В этой конкретной ситуации для Реселекта нет реальной выгоды.На самом деле, ваш пример selectItemAObject селектор не делает ничего полезного, потому что «выходной селектор» просто возвращает значение, которое он дал.

В целом, основные причины использования селекторов:

  • Инкапсулирует поиск состояний, поэтому остальная часть кодовой базы не должна точно знать, где данный фрагмент данных находится в дереве состояний
  • Хранить сложную логику преобразования в одном месте
  • Повышение производительности за счет запоминания поисков и преобразований, особенно если они дорогостоящие.

Для получения дополнительной информации см. Мой пост Идиоматический Redux: Использование повторного выбора селекторов для инкапсуляции и производительности .

...