Как досрочно выйти из крючка useEffect? - PullRequest
0 голосов
/ 10 февраля 2019

В документах говорится, что мы должны вызывать только перехватчики на верхнем уровне наших компонентов.Из-за API useEffect return уже зарезервировано для очистки, что заставило меня задуматься, как можно раньше выйти из ловушки useEffect во избежание глубокого вложения моих операторов if.

// instead of
React.useEffect(() => {
  if (foo){
    // do something
  }
})

// I would rather write something like
React.useEffect(() => {
  if (!foo){
    // exit early and stop executing the rest of the useEffect hook
  }

  // do something
})

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

1 Ответ

0 голосов
/ 10 февраля 2019

Как и для любой функции, ее можно рано закрыть с помощью ключевого слова return.

Эти два фрагмента эквивалентны:

React.useEffect(() => {
  if (foo){
    // do something
  }
})


React.useEffect(() => {
  if (!foo){
    return;
  }

  // do something
})
...