Как вызвать хук условно, не получая ошибку «рендерит больше хуков, чем во время предыдущего рендера» - PullRequest
1 голос
/ 01 октября 2019

В настоящее время у меня есть экран, на котором я звоню:

const currentBusiness = useSelector(state => state.business.ownerBusiness)

Однако не все пользователи владеют бизнесом, поэтому иногда useSelector не находит бизнес, что означает, что currentBusiness будет false и иногда это будет true (в зависимости от пользователя, вошедшего в систему).

Под этим вызовом перехвата у меня есть другой перехват, где я вызываю

const employeeArray = useSelector(state => state.employees.availableEmployees.filter(employee => employee.businessId === currentBusiness.Id));

Второй useSelector полагается на первый useSelector, фактически возвращающий что-то, потому что он использует currentBusiness.Id в методе фильтра.

У меня есть два вопроса:

  1. если я добавлю второй useSelector в оператор if с условием currentBusiness === true, как мне использовать employeeArray вне оператора if, потому что мой VSCode показывает мне, что после его вложенияв операторе if я могу только вызвать его там.

  2. В случае, если я решу свой первый вопрос, как мне предотвратить получение ошибки, "оказывалось больше хуков, чем во времяпредыдущий рендер ", потому что если сurrentBusiness имеет значение false. Я бы не выполнял useSelector в операторе if (я буду рендерить определенный экран), однако, когда это правда, я буду выполнять тот дополнительный хук, который вызывает ошибку. (Я буду отображать другой экран со списком всех текущих сотрудников).

Любая помощь приветствуется. Спасибо

...