спасибо за такой инсайт не ожидал что он окажется реально полезным в работе часто задумывался как бы сразу получать "реактивное" значение в компоненте не используя useEffect + useState
Один момент во всех примерах: ф-ию subscribe необходимо запоминать, т.е. закинуть в useCallback, иначе подписка/отписка будут происходить при каждом обновлении компонента, что может неплохо так бить по производительности
На мой взгляд оптимизация useResizeObserver ну так скажем, на каждый ресайз setSize. Я сделал так: type Bounds = { left: number; top: number; width: number; height: number } const useResizeObserver = ( callback: (bounds: Bounds) => void, throttleDelay = 0 ) => { const elemRef = useRef(null) // ... Юзер уже решит колбеком записывать стейт или нет. Без useSyncExternalStore. Может юзеру не нужен каджый пиксель, а булеан, например, width < 800. Может он захочет записать прямо в Zustand дав понять всему дереву компонентов про layout.
Появилось мысль сделать на основе вашего хука матчмедии свой, в который будет прокидываться енум с разрешениями, по типу мобайл, таблет и тп, а значения будут экспортироваться из scss переменных, чтобы меняя в одном месте подстраивались и стили и разметка
И в последнем примере если из localStorage возвращается объект, то в примере из видео всё поломается, т.к. каждый раз снапшот будет другой и реакт войдёт в бесконечный цикл
UseEffect несколько о другом. Да, там можно делать подписки на API, но сам хук ничего не возвращает. Значит придется плюс к нему управлять состоянием, которое мы получили извне.
И в последнем примере если из localStorage возвращается объект, то в примере из видео всё поломается, т.к. каждый раз снапшот будет другой и реакт войдёт в бесконечный цикл
спасибо Михаил. Ваши курсы для меня были очень полезны и как начинающему было понятно.
спасибо за такой инсайт
не ожидал что он окажется реально полезным
в работе часто задумывался как бы сразу получать "реактивное" значение в компоненте
не используя useEffect + useState
Круто! Спасибо!
отличное применение) спасибо) было интересно узнать)
Миша - бриллиант 💎
Спасибо тебе ❤
Годный контент. Лайк
Один момент во всех примерах: ф-ию subscribe необходимо запоминать, т.е. закинуть в useCallback, иначе подписка/отписка будут происходить при каждом обновлении компонента, что может неплохо так бить по производительности
Классно, особенно понравился пример с синхронизацией вкладок
На мой взгляд оптимизация useResizeObserver ну так скажем, на каждый ресайз setSize.
Я сделал так:
type Bounds = { left: number; top: number; width: number; height: number }
const useResizeObserver = (
callback: (bounds: Bounds) => void,
throttleDelay = 0
) => {
const elemRef = useRef(null)
// ...
Юзер уже решит колбеком записывать стейт или нет. Без useSyncExternalStore. Может юзеру не нужен каджый пиксель, а булеан, например, width < 800. Может он захочет записать прямо в Zustand дав понять всему дереву компонентов про layout.
шикос
Хук просто шикарный. Есть useSyncExternalStoreWithSelector из коробки
и че
@@romandeveloper7720 контекст вашего комментарий слишком глупый что бы на него отвечать
Нормас)
Появилось мысль сделать на основе вашего хука матчмедии свой, в который будет прокидываться енум с разрешениями, по типу мобайл, таблет и тп, а значения будут экспортироваться из scss переменных, чтобы меняя в одном месте подстраивались и стили и разметка
И в последнем примере если из localStorage возвращается объект, то в примере из видео всё поломается, т.к. каждый раз снапшот будет другой и реакт войдёт в бесконечный цикл
Спасибо, интересно. А есть этот код на гите? Или где-то ещё?
Могу выложить. Это сырые наброски.
@@mishanep , для понимания хватит и этого.
хотелось бы какой то наглядный пример в чем эго преимущество перед useEffect. показались довольно схожи по видео
UseEffect несколько о другом. Да, там можно делать подписки на API, но сам хук ничего не возвращает. Значит придется плюс к нему управлять состоянием, которое мы получили извне.
Интересно, изменения оно триггерит когда ? Сразу или, до эффектов, после эффектов, во время эффектов и т д.
в смысле когда? ты ведь подписываешься на события. когда событие срабатывает, тогда и триггерт.
и снова грасиас
Де нада
Мне кажется эта работа вас убивает. Поберегите здоровье, возьмите отпуск. Спасибо за ваши видео!
Михаил, как с вами связаться напрямую? По вопросу менторства. Пробовал писать на почту, но не уверен, что читаете...
Почту читаю. pcgramota@gmail.com
Круто! Спасибо! 🔥👍🔥👍🔥
И в последнем примере если из localStorage возвращается объект, то в примере из видео всё поломается, т.к. каждый раз снапшот будет другой и реакт войдёт в бесконечный цикл