Добавить
Уведомления

Менеджмент состояния в React без Redux – когда хватает useReducer, useState и useContext

⚡ Получить весь курс (22 урока) сразу: https://boosty.to/friendly-frontend/posts/08f4cd01-a7ce-4e5b-8055-88aa401c7808 ✏️ Разберём менеджмент состояния без Redux на примере To Do List: покажу, где у нас живут данные и UI-мелочи, почему разрозненные setTasks в обработчиках опасны (устаревший снимок, лишние ререндеры), и как это чинится. Коротко объясню, что такое useReducer и зачем он нужен именно здесь. Переложим массив задач с useState на useReducer, опишем простые экшены (SET_ALL, ADD, TOGGLE_COMPLETE, DELETE, DELETE_ALL) и заменим setTasks на dispatch в addTask, toggleTaskComplete, deleteTask, deleteAllTasks. Оставим асинхронщину с сервером (tasksAPI) снаружи редьюсера: сначала ответ, потом dispatch. Почистим зависимости useCallback, чтобы обработчики не висели на tasks. Оптимизируем контекст: мемоизируем value в TasksContext через useMemo. Ускорим список: обернём TodoItem в React.memo. В конце зафиксируем простые правила — когда брать useState, когда useContext, и когда подключать небольшой useReducer. Всё — без сторонних библиотек и без ломки существующего кода. ❤️ Ранний доступ к видео и доступ к закрытому чату: https://boosty.to/friendly-frontend 🔴 Timeline: ▶ 00:00 | Введение ▶ 00:39 | Текущее состояние проекта и проблематика ▶ 03:40 | useReducer ▶ 12:48 | Оптимизация контекста ▶ 14:50 | useState, useContext или useReducer – когда что использовать ▶ 17:09 | Заключение 📚 Ссылки из видео: ➖ Код на конец урока: https://github.com/aleksanderlamkov/todo-react/tree/f1ee0c8f1c9711a04560456a0072cfdf0736133a 🧑💻 Основной телеграм-канал: https://t.me/AleksanderLamkov 💬 Коммьюнити-чат в телеграме (помощь новичкам): https://t.me/FriendlyFrontend 🗂️ Бесплатные курсы на канале: 🟠 HTML: https://youtube.com/playlist?list=PL0MUAHwery4ot0KmgGxlBSB7rXssLeA6h 🔵 CSS: https://youtube.com/playlist?list=PL0MUAHwery4o9I7QQVj_RP4ZVpmdx6evz 🟡 JS: https://www.youtube.com/playlist?list=PL0MUAHwery4qn4Y27iUxmzC-JiauX7vSL 🟢 A11y: https://youtube.com/playlist?list=PL0MUAHwery4r4gCA3AOtHgArM_UOb2QUV 🗺 Frontend Roadmap: https://youtu.be/1WRJKgwlX9w ⚪️ Мастер-класс по верстке для новичков: https://www.youtube.com/playlist?list=PL0MUAHwery4rqkzKF1mDBCIH_eZgjY6uN 🔘 Мастер-класс по верстке для продвинутых (БЭМ, SCSS): https://www.youtube.com/playlist?list=PL0MUAHwery4rdZt-8E9p9zty2ZUCH6Ai3 ⚫️ Мастер-класс по верстке с практикой по JavaScript: https://youtu.be/hkYzqTKnSIg 🔴 Мастер-класс по верстке на стеке JSX, SCSS, JS, Vite, Minista (SSG), БЭМ: https://stepik.org/a/228315 📌 Автор: ➖ Личный сайт: https://aleksanderlamkov.ru/ ➖ Telegram: https://t.me/AleksanderLamkov ➖ Boosty: https://boosty.to/friendly-frontend ➖ GetMentor: https://getmentor.dev/mentor/aleksandr-lamkov-1480 ➖ Stepik (платные курсы и мастер-классы): https://stepik.org/a/228315 #frontend #фронтенд #react #reactjs

12+
45 просмотров
8 дней назад
12+
45 просмотров
8 дней назад

⚡ Получить весь курс (22 урока) сразу: https://boosty.to/friendly-frontend/posts/08f4cd01-a7ce-4e5b-8055-88aa401c7808 ✏️ Разберём менеджмент состояния без Redux на примере To Do List: покажу, где у нас живут данные и UI-мелочи, почему разрозненные setTasks в обработчиках опасны (устаревший снимок, лишние ререндеры), и как это чинится. Коротко объясню, что такое useReducer и зачем он нужен именно здесь. Переложим массив задач с useState на useReducer, опишем простые экшены (SET_ALL, ADD, TOGGLE_COMPLETE, DELETE, DELETE_ALL) и заменим setTasks на dispatch в addTask, toggleTaskComplete, deleteTask, deleteAllTasks. Оставим асинхронщину с сервером (tasksAPI) снаружи редьюсера: сначала ответ, потом dispatch. Почистим зависимости useCallback, чтобы обработчики не висели на tasks. Оптимизируем контекст: мемоизируем value в TasksContext через useMemo. Ускорим список: обернём TodoItem в React.memo. В конце зафиксируем простые правила — когда брать useState, когда useContext, и когда подключать небольшой useReducer. Всё — без сторонних библиотек и без ломки существующего кода. ❤️ Ранний доступ к видео и доступ к закрытому чату: https://boosty.to/friendly-frontend 🔴 Timeline: ▶ 00:00 | Введение ▶ 00:39 | Текущее состояние проекта и проблематика ▶ 03:40 | useReducer ▶ 12:48 | Оптимизация контекста ▶ 14:50 | useState, useContext или useReducer – когда что использовать ▶ 17:09 | Заключение 📚 Ссылки из видео: ➖ Код на конец урока: https://github.com/aleksanderlamkov/todo-react/tree/f1ee0c8f1c9711a04560456a0072cfdf0736133a 🧑💻 Основной телеграм-канал: https://t.me/AleksanderLamkov 💬 Коммьюнити-чат в телеграме (помощь новичкам): https://t.me/FriendlyFrontend 🗂️ Бесплатные курсы на канале: 🟠 HTML: https://youtube.com/playlist?list=PL0MUAHwery4ot0KmgGxlBSB7rXssLeA6h 🔵 CSS: https://youtube.com/playlist?list=PL0MUAHwery4o9I7QQVj_RP4ZVpmdx6evz 🟡 JS: https://www.youtube.com/playlist?list=PL0MUAHwery4qn4Y27iUxmzC-JiauX7vSL 🟢 A11y: https://youtube.com/playlist?list=PL0MUAHwery4r4gCA3AOtHgArM_UOb2QUV 🗺 Frontend Roadmap: https://youtu.be/1WRJKgwlX9w ⚪️ Мастер-класс по верстке для новичков: https://www.youtube.com/playlist?list=PL0MUAHwery4rqkzKF1mDBCIH_eZgjY6uN 🔘 Мастер-класс по верстке для продвинутых (БЭМ, SCSS): https://www.youtube.com/playlist?list=PL0MUAHwery4rdZt-8E9p9zty2ZUCH6Ai3 ⚫️ Мастер-класс по верстке с практикой по JavaScript: https://youtu.be/hkYzqTKnSIg 🔴 Мастер-класс по верстке на стеке JSX, SCSS, JS, Vite, Minista (SSG), БЭМ: https://stepik.org/a/228315 📌 Автор: ➖ Личный сайт: https://aleksanderlamkov.ru/ ➖ Telegram: https://t.me/AleksanderLamkov ➖ Boosty: https://boosty.to/friendly-frontend ➖ GetMentor: https://getmentor.dev/mentor/aleksandr-lamkov-1480 ➖ Stepik (платные курсы и мастер-классы): https://stepik.org/a/228315 #frontend #фронтенд #react #reactjs

, чтобы оставлять комментарии