React Native: избегайте бесконечного l oop с помощью useCallback - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь отправить действие на API, когда появляется домашний экран, но у меня бесконечное l oop.

Мой проект:

  • Приложение React Native
  • Redux
  • redux-ax ios -middleware
  • React Navigation (я использую ящик)

То, что я пробовал:

const dispatch = useDispatch();

useEffect(() => {
  const fetchNewMails = () => 
    return dispatch(ACTIONS.mailActions.fetchMails());
  };
  fetchNewMails();
}, [dispatch]);

-------

const dispatch = useDispatch();

const fetchNewMails = useCallback(() => {
  return dispatch(ACTIONS.mailActions.fetchMails());
}, [dispatch]);

useEffect(() => {
  const unsubscribe = navigation.addListener('focus', () => {
    fetchNewMails();
  });

  return unsubscribe;
}, [fetchNewMails, navigation]);

Простой console.log не создает бесконечный l oop, но действие отправки да ..

Заранее спасибо, если у вас есть идеи.

1 Ответ

0 голосов
/ 07 мая 2020

Ответ указан c для моего проекта, но вот он:

Я отображал LoadingScreen в приложении. js в зависимости от значения переменной Redux это вызывало повторный рендеринг.

Решение: оставьте экран загрузки независимым и удалите его из приложения. js.

Проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...