За всю жизнь реализовал, наверное, больше двух десятков вариаций батчилок (реализовал бы одну и сделал библиотекой, да каждый раз вокруг то mobx, то redux-thunk, то redux-saga, то effector вообще) — классов, которые параметризируются чем-то, что берёт из очереди сколько нужно задач, выполняет их пачкой (делает запрос, например) и выдаёт результат для каждой задачи отдельно. С разными вариациями в виде настроек времени между пачками, throttle/debounce для сбора пачки, поддержки отмены задач, объединения одинаковых задач добавленных несколько раз по уникальным ключам, кастомизации сбора пачки в случаях когда нельзя в одну пачку складывать данные разных категорий (и не хочется делать для них отдельные экземпляры очередей), может ещё что-то было.
И мне нравится когда в реакте ты можешь просто в месте где тебе нужны какие-то данные вызвать хук/обернуть компонентом и когда оно отрендерится (и, опционально, будет видно на экране) — добавит задачу в очередь, множество таких мест на экране соберутся в одну пачку, игнорируя дубли, сделают один запрос и покажут нужные данные.
Как мне кажется это более правильный путь, чем пытаться во всех местах где мы получаем данные искать места где доступен весь список сущностей и делать один запрос там, без сложной машинерии очередей и группировки. Особенно не хочется думать о том, что делать, если часть исходных данных поменяется и нужно повторить запрос только для изменённых сущностей, придётся делать неизвестно что (чаще всего проще забить и перезапросить вообще всё), а в варианте с одиночными запросами всё просто — зависимости изменились, снова добавились в очередь, автоматически объединились с прочими запросами и запросили только то, что нужно.
#фронтенд #react
И мне нравится когда в реакте ты можешь просто в месте где тебе нужны какие-то данные вызвать хук/обернуть компонентом и когда оно отрендерится (и, опционально, будет видно на экране) — добавит задачу в очередь, множество таких мест на экране соберутся в одну пачку, игнорируя дубли, сделают один запрос и покажут нужные данные.
Как мне кажется это более правильный путь, чем пытаться во всех местах где мы получаем данные искать места где доступен весь список сущностей и делать один запрос там, без сложной машинерии очередей и группировки. Особенно не хочется думать о том, что делать, если часть исходных данных поменяется и нужно повторить запрос только для изменённых сущностей, придётся делать неизвестно что (чаще всего проще забить и перезапросить вообще всё), а в варианте с одиночными запросами всё просто — зависимости изменились, снова добавились в очередь, автоматически объединились с прочими запросами и запросили только то, что нужно.
#фронтенд #react