@baroman4ik

Как поочерёдно выполнить setState запросы после выполнения предыдущего в React?

Есть fetch содержащий 4 setState функции и так как они асинхронные, то не дожидаясь выполнения начитает выполняться сделующий сетстейт, работа которого завязана на предыдущем. Подскажите пожалуйста как лучше дождаться выполнения предыдущего сетСтейта перед работой нового. Вот код:
React.useEffect(() => {
    (async () => {
      let data = await fetch("/arr").then((data) => {
        setThemes(data.json());
        setActiveTheme(() => Math.floor(themes.length / 2));
        setActivePlace(() => Math.floor(themes[activeTheme].subtopics.length/2))
        setIsLoad(() => false);
      });
    })();
  }, []);
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
React.useEffect(() => {
    (async () => {
        try {
            const themes = await fetch("/arr").then((data) => data.json());
            const activeTheme = Math.floor(themes.length / 2);
            const activePlace = Math.floor(themes[activeTheme].subtopics.length / 2);

            setThemes(themes);
            setActiveTheme(activeTheme);
            setActivePlace(activePlace);
        } finally {
            setIsLoad(false);
        }
    })();
}, []);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы