Приветствие и представление
- Спикер: Иван Малюгин
- Ожидания от доклада: как вдохнуть новую жизнь в Redux. Основные проблемы использования Redux на практике.
Обсуждение проблем с Redux
- Использование Redux на рабочих проектах.
- Опасения новых сотрудников при упоминании Redux в интервью.
- Потребность в улучшении подходов к управлению состоянием.
Компоненты и обмен данными в React
- Проблема "props drilling" без использования Redux: данные передаются сверху вниз через несколько уровней компонентов.
- При добавлении Redux появляется возможность связывать компоненты, избегая передачи пропсов через промежуточные компоненты.
- Два подхода:
- Коннектить все компоненты для сокращения props drilling.
- Оставлять компоненты чистыми для упрощения кода.
Практики использования селекторов Redux
- Селекторы для извлечения вложенных данных (например,ราคา в определённом товаре).
- Проблема: сложность управляемых зависимостей между селекторами.
- Решение: использование
createSelectorиз библиотекиreselect, чтобы улучшить кэширование данных.
Проблемы с существующими селекторами
- Селекторы могут становиться слишком сложными и запутанными.
- Зависимости между селекторами могут усложнять управление состоянием.
- Опыт с другими state-менеджерами (например, riatom, ReactQuery) не решал основную проблему, и был возвращен к Redux.
Создание нового решения
- Идея: использование контекста для управления состоянием.
ReduxCurrentкак новая библиотека будет использовать подход "current context“, позволяя создавать провайдеры с модифицированным состоянием.- Решение проблемы селекторов: возможность добавлять модифицированные ключи и использовать их в селекторах без изменения кода.
API библиотеки
ReduxCurrent- Внутренняя реализация: методы для создания и инъекции текущих значений.
- Селекторы и провайдеры для управления данными.
- Введение "injectable actions" для оптимизации работы с exponses.
Рефакторинг компонентов
- Переход от обычных компонентов к смарт-компонентам с использованием библиотеки управления.
- Хорошая типизация через TypeScript.
- Использование функций модуля для работы с селекторами и уменьшение дублирования.
Плюсы и минусы подхода
- Плюсы: отсутствие мидлваров, возможность переиспользования кода, упрощение работы с массивами и селекторами.
- Минусы: потеря прозрачности в наблюдаемости, проблемы с кабелями селекторов и замиранием состояния.
Заключение
- Сообщение о доступности библиотеки на GitHub и NPM.
- Вопросы и ответы по докладу.
- Интересные идеи о возможных переходах на более современные state-менеджеры.
- Контроль за типизацией и упрощение управления данными через контексты.
- Советы по доработке практик и работе с библиотеками для управления состоянием.