Ошибка повторного выбора: создатели селектора ожидают, что все селекторы ввода будут функциями - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь использовать повторный выбор в моем компоненте:

  const test = useSelector(({ test }) => test);
  const testData = createSelector(
    test,
    items => console.log(items),
  );

Я получаю Error: Selector creators expect all input-selectors to be functions, instead received the following types: [object]. Я не знаю, если это важно, но тест приходит asyn c. Что я могу сделать, чтобы это заработало?

Спасибо!

1 Ответ

0 голосов
/ 23 января 2020

Ваш код выглядит как обратный.

useSelector ожидает функцию селектора в качестве аргумента, вызывает селектор и возвращает результат .

Этот фрагмент, похоже, пытается использовать возвращаемое значение из useSelector в качестве ввода для createSelector, что неверно.

Кроме того, вы не должны вызывать createSelector внутри компонента, так как это будет создавать новый запомненный экземпляр селектора каждый раз, когда компонент рендерится.

Наконец, хотя я понимаю, что это, скорее всего, просто попытка убедиться, что все работает, вы не должны делать такую ​​работу, как console.log() внутри селектор. Селектор должен просто возвращать значение.

Если это значение test не существует сразу, тогда ваш селектор и логика компонента c должны быть написаны так, чтобы обрабатывать случаи, когда они могут не существовать .

...