Size: a a a

React — русскоговорящее сообщество

2020 October 14

D

Danila in React — русскоговорящее сообщество
Ivan Bobchenkov
Нужно ли его мемоизировать? Или постоянно проверять при каждом ререндере?
import { useState, useEffect, useMemo } from 'react';

const useWindowWidth = () => {
 const [width, setWidth] = useState(document.documentElement.clientWidth);

 useEffect(() => {
   // todo:debounce
   const handler = () => setWidth(document.documentElement.clientWidth);
   window.addEventListener('resize', handler);
   return () => window.removeEventListener('resize', handler);
 }, []);

 return width;
};

export const useBreakpointUp = (breakpoint: number): boolean => {
 const width = useWindowWidth();
 return useMemo(() => breakpoint < width, [width, breakpoint]);
}
источник

IB

Ivan Bobchenkov in React — русскоговорящее сообщество
Danila
import { useState, useEffect, useMemo } from 'react';

const useWindowWidth = () => {
 const [width, setWidth] = useState(document.documentElement.clientWidth);

 useEffect(() => {
   // todo:debounce
   const handler = () => setWidth(document.documentElement.clientWidth);
   window.addEventListener('resize', handler);
   return () => window.removeEventListener('resize', handler);
 }, []);

 return width;
};

export const useBreakpointUp = (breakpoint: number): boolean => {
 const width = useWindowWidth();
 return useMemo(() => breakpoint < width, [width, breakpoint]);
}
А зачем там дебаунс нужен?)
источник

D

Danila in React — русскоговорящее сообщество
Ivan Bobchenkov
А зачем там дебаунс нужен?)
Любые листенеры часто вызываемых событий нужно дебаунсить
источник

D

Danila in React — русскоговорящее сообщество
Ресайз окна или скролл - как раз такие события
источник

IB

Ivan Bobchenkov in React — русскоговорящее сообщество
Danila
Ресайз окна или скролл - как раз такие события
В общем, в дебаунс обернуть, да?
источник

D

Danila in React — русскоговорящее сообщество
Ivan Bobchenkov
В общем, в дебаунс обернуть, да?
Именно листенер ресайза - да.
источник

И

Иван in React — русскоговорящее сообщество
Danila
import { useState, useEffect, useMemo } from 'react';

const useWindowWidth = () => {
 const [width, setWidth] = useState(document.documentElement.clientWidth);

 useEffect(() => {
   // todo:debounce
   const handler = () => setWidth(document.documentElement.clientWidth);
   window.addEventListener('resize', handler);
   return () => window.removeEventListener('resize', handler);
 }, []);

 return width;
};

export const useBreakpointUp = (breakpoint: number): boolean => {
 const width = useWindowWidth();
 return useMemo(() => breakpoint < width, [width, breakpoint]);
}
useMemo достаточно бесполезный
источник

D

Danila in React — русскоговорящее сообщество
Иван
useMemo достаточно бесполезный
Согласен.
источник

YJ

Young George Jellyfi... in React — русскоговорящее сообщество
Подскажите пожалуйста что его не устраивает
источник

YJ

Young George Jellyfi... in React — русскоговорящее сообщество
источник

А

Александр in React — русскоговорящее сообщество
метод рендер не возвращает ничего
источник

А

Александр in React — русскоговорящее сообщество
хотя бы  return null надо
источник

А

Александр in React — русскоговорящее сообщество
Young George Jellyfish
Подскажите пожалуйста что его не устраивает
точнее тут
источник

Т

Тимофей 🛴 in React — русскоговорящее сообщество
response && response.data или response?.data еще поправь, но это не причина ошибки
источник

А

Александр in React — русскоговорящее сообщество
вообще похоже на получение данных в рендере, чего не должно быть
источник

EM

Eugene Maltsev in React — русскоговорящее сообщество
render() { return null }
источник

АК

Андрей Кустов... in React — русскоговорящее сообщество
Привет. Можно как-то useState изменить только у вложенного массива? А то вместо того, чтобы перерисовать только атрибут value у инпута, у меня перерисовывается и сам инпут и его родительский див
источник

А

Александр in React — русскоговорящее сообщество
Андрей Кустов
Привет. Можно как-то useState изменить только у вложенного массива? А то вместо того, чтобы перерисовать только атрибут value у инпута, у меня перерисовывается и сам инпут и его родительский див
при рендере массива, каждый айтем оберни в memo, сответстветственно там где пропсы не изменятся рендера не будет
источник

M

Maksim in React — русскоговорящее сообщество
кто-нить делал виртуализацию вложенных листов (древовидная структура)? а то пока не могу придумать как нормально сделать.
источник

YJ

Young George Jellyfi... in React — русскоговорящее сообщество
Александр
метод рендер не возвращает ничего
Это в функция внутри класса, в самом классе render возвращает объекты
источник