Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 14

Бесконечный вызов dispatch

28.04.2021, 10:41. Показов 2079. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрейшего времени суток. Столкнулся с неприятной ситуацией, когда начинают бесконечно вызываться два диспатча, если один из них я кидаю в then у промиса. В общем:
есть Thunk
JavaScript
1
2
3
4
5
6
7
8
9
10
export const getAllUsersProfilesThunk = () => {
    return async (dispatch: any) => {
        dispatch(startLoading())
        getAllUsersProfiles()
            .then(users => {
                dispatch(setAllUsersProfiles(users))
                dispatch(finishLoading())
            })
    }
}
при рендере компоненты я хочу вызвать этот thunk
JavaScript
1
2
3
useEffect(() => {
        props.getAllUsersProfiles()
    }, [])
в таком случае startLoading и finishLoading начинают вызваться бесконечно друг за другом.
Если же finishLoading вынести из промиса и написать после, то все нормально, но такое не подходит
Я примерно понимаю из-за чего это происходит, но никак не могу дойти до решения.
Заранее огромная благодарность
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2021, 10:41
Ответы с готовыми решениями:

бесконечный вызов функции
в общем есть такой кусочек кода void GameSystem::playGame() { bool isDone = false; while(isDone != true) { ...

Бесконечный вызов функции
Здравствуйте, проблема в том, как я понял, что функция qwe у меня вызывается постоянно и по-этому выполнение программы занимает бесконечно...

Бесконечный вызов функции
Здравствуйте! Подскажите, как по завершении работы функции вызвать ее же, чтобы получилось бесконечное ее выполнение? пробую так: ...

2
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
28.04.2021, 15:03
Лучший ответ Сообщение было отмечено StsiapanTsikhan как решение

Решение

сначала подумал что
Цитата Сообщение от StsiapanTsikhan Посмотреть сообщение
useEffect(() => {
        props.getAllUsersProfiles()
}, [])
будет вызываться при каждом изменении параметра, но это не так ( у вас [] в зависимостях стоит что должно отрабатывать только 1 раз при 1-м рендеринге).

есть 2 догадки:
1) что-то в finishLoading триггерит startLoading
2) при изменении стейта у вас элемент пропадает из виртуального дома, а потом опять попадает туда и отрабатывает эффект снова

для 1) - нужно что бы вы прислали функции startLoading и finishLoading (можете ещё setAllUsersProfiles прислать) посмотрим на них.
для 2) - посмотрите не стоит ли у родительского элемента conditional rendering на этот ваш элемент (что-то типо {isLoading ? null : <MyComponent />} )?
2
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 14
28.04.2021, 18:40  [ТС]
Спасибо огромное. Я действительно проверял загрузку в компоненте несколько уровней выше. А нужная компонента исчезла и появлялась в virtualDOM. Бесконечная благодарность от всей души и сердца
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2021, 18:40
Помогаю со студенческими работами здесь

Бесконечный вызов функций по очереди
Как написать так, чтобы эти 4 функции вызывались по очереди, бесконечно число раз при загрузке страницы? $(document).ready(function(){ ...

Бесконечный вызов функций с интервалом
Есть программа &quot;Светофор&quot;. На HTML нарисован светофор и по нажатию соответствующих кнопок он меняет цвет. Вот функции которые это делают: ...

Бесконечный вызов KeyDown для формы
поставил для формы KeyPreview = true; сделал в один поток вывод событий клавиатуры(так нужно), а основной поток отлавливает события и...

Бесконечный вызов дестркутора для глобального объекта
Наткнулся в книге на такую задачу - &quot;деструктор класса содержит ф-цию exit(), создайте глобальный объект класса и посмотрите, что...

Dispatch в Python
обескал весь гугл и не нашел ничего полезного по теме. кто то может обьяснить и показать пример кода питона с Dispatch?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru