В Redux каждое изменение в хранилище запускает notify
для всех подключенных компонентов. Это делает вещи очень простыми для разработчика, но что, если у вас есть приложение с N связанными компонентами, а N очень велико?
Каждое изменение в хранилище, даже если оно не связано с компонентом, все еще запускает shouldComponentUpdate
с простым тестом ===
на пути reselect
ed хранилища. Это быстро, правда? Конечно, может быть, один раз. Но N раз, для каждого изменения? Это фундаментальное изменение в дизайне заставляет меня подвергнуть сомнению истинную масштабируемость Redux.
В качестве дополнительной оптимизации можно выполнить все вызовы notify
, используя _.debounce
. Тем не менее, тестирование N ===
для каждого изменения магазина и обработки другой логики, например логики представления, похоже на средство для завершения.
Я работаю над мобильным и мобильным приложениями для мобильных и мобильных приложений с миллионами пользователей и перехожу от Backbone to Redux. В этом приложении пользователю предоставляется swipeable интерфейс, который позволяет им перемещаться между различными стеками представлений, подобно Snapchat, за исключением того, что каждый стек имеет бесконечную глубину. В самом популярном типе просмотра бесконечный скроллер эффективно обрабатывает загрузку, рендеринг, прикрепление и отключение элементов фида, например, сообщение. Для задействованного пользователя нередко прокручивается сотни или тысячи сообщений, затем вводится пользовательский фид, другой пользовательский канал и т.д. Даже при большой оптимизации количество подключенных компонентов может быть очень большим.
Теперь, с другой стороны, дизайн Backbone позволяет каждому виду точно слушать модели, которые влияют на него, уменьшая N до константы.
Я что-то упустил, или Redux принципиально испорчен для большого приложения?