Size: a a a

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

2020 November 01

ЕК

Евгений Кравцов... in React — русскоговорящее сообщество
Всем привет, я чтот туплю, не могу понять почему ререндер не происходит, при изменении стейта по клику на сорт
https://codesandbox.io/s/confident-herschel-oxwty?file=/src/App.js
источник

D

Dmitriy in React — русскоговорящее сообщество
Евгений Кравцов
Всем привет, я чтот туплю, не могу понять почему ререндер не происходит, при изменении стейта по клику на сорт
https://codesandbox.io/s/confident-herschel-oxwty?file=/src/App.js
Потому что у тебя ключи это индексы
источник

CZ

Ches 👨‍🌾 Zhuravsky... in React — русскоговорящее сообщество
привет, подскажите как реакт создает функции при перерендере?
нужен ли тут useCallback?

ререндер часто происходит
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Ререндер скорее всего происходит когда меняется dragState.current, useCallback тут не нужен
источник

CZ

Ches 👨‍🌾 Zhuravsky... in React — русскоговорящее сообщество
реф точно ререндер не делает)
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Ты бы еще меньше кода кинул и спросил а почему так работает
источник

ЕК

Евгений Кравцов... in React — русскоговорящее сообщество
Dmitriy
Потому что у тебя ключи это индексы
заменил ключи на elem.toString но все равно также
https://codesandbox.io/s/confident-herschel-oxwty?file=/src/App.js:0-436
источник

A

Artem in React — русскоговорящее сообщество
Всем привет, есть 2 вопроса по использованию requestAnimationFrame в React:
1) Когда логирую значение raf в requestRef.current, то получаю значения через один (1, 3, 5, ...)
Однако если уберу вызов graphService.handleRAF(time), то идут по порядку (1, 2, 3, 4, 5, ...)
С чем это связано?

2) Время от времени по каким-то причинам не сбрасывается raf при изменении graphState в useEffect
При дестрое вызывается cancelAnimationFrame с текущим идом, однако после этого почему-то animate снова вызывается и продолжает рекурсивно дальше вызвать себя
Почему так происходит?
const animate = (time: number): void => {
 graphService.handleRAF(time);

 requestRef.current = requestAnimationFrame(animate);
};

useEffect(() => {
 if (graphState === 1) {
   requestRef.current = requestAnimationFrame(animate);
 }

 return (): void => cancelAnimationFrame(requestRef.current as number);
}, [graphState]);
источник

AA

Andrey Androsov in React — русскоговорящее сообщество
хеллоу.
вопрос по верстке в реакте:
хочу сделать два вида одного элемента — для десктопа и для мобилки(выглядить будут по-разному в зависимости от ширины вьюпорта и css media скорее всего не решит этой проблемы). проблема в том, что не понимаю, как лучше сделать. думал написать два вида и как-то рендерить тот, который подходит под мою ширину(if'ом каким нить)

п.с.: не бейте сильна
источник

@

@xtx in React — русскоговорящее сообщество
Andrey Androsov
хеллоу.
вопрос по верстке в реакте:
хочу сделать два вида одного элемента — для десктопа и для мобилки(выглядить будут по-разному в зависимости от ширины вьюпорта и css media скорее всего не решит этой проблемы). проблема в том, что не понимаю, как лучше сделать. думал написать два вида и как-то рендерить тот, который подходит под мою ширину(if'ом каким нить)

п.с.: не бейте сильна
есть скрины что бы понять что это действительно нельзя решить цссом?
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Евгений Кравцов
Всем привет, я чтот туплю, не могу понять почему ререндер не происходит, при изменении стейта по клику на сорт
https://codesandbox.io/s/confident-herschel-oxwty?file=/src/App.js
const handleSort = () => {
   const reverseData = data.reverse();
   setData([...reverseData]);
 };
источник

ЕК

Евгений Кравцов... in React — русскоговорящее сообщество
Ilya Neron
const handleSort = () => {
   const reverseData = data.reverse();
   setData([...reverseData]);
 };
помогло, а почему так?)
источник

А

Абырвалг in React — русскоговорящее сообщество
Andrey Androsov
хеллоу.
вопрос по верстке в реакте:
хочу сделать два вида одного элемента — для десктопа и для мобилки(выглядить будут по-разному в зависимости от ширины вьюпорта и css media скорее всего не решит этой проблемы). проблема в том, что не понимаю, как лучше сделать. думал написать два вида и как-то рендерить тот, который подходит под мою ширину(if'ом каким нить)

п.с.: не бейте сильна
styled components не помогут?
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Евгений Кравцов
помогло, а почему так?)
Костыли реакта, но вообще думаю рендер не понимает что ссылка изменилась после изменения стейта, но а если ты уже возвращаешь в setData абсолютно новый массив, то понимает
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Если кто-то шарит объясните пж, интересны другие мнения
источник

AA

Andrey Androsov in React — русскоговорящее сообщество
@xtx
есть скрины что бы понять что это действительно нельзя решить цссом?
на мобилке хочу шоб сайдбар был на всю ширину и при клике на айтем —  рендерился этот компонент. на десктопе понятно как будет выглядить, а с воображением "как сделать так, шоб на мобилках было юзабельно" проблемы
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Andrey Androsov
на мобилке хочу шоб сайдбар был на всю ширину и при клике на айтем —  рендерился этот компонент. на десктопе понятно как будет выглядить, а с воображением "как сделать так, шоб на мобилках было юзабельно" проблемы
а при чем тут вью порт?
источник

AA

Andrey Androsov in React — русскоговорящее сообщество
Ilya Neron
а при чем тут вью порт?
про вьюпорт зря сказал) он тут не при чем
источник

@

@xtx in React — русскоговорящее сообщество
Andrey Androsov
на мобилке хочу шоб сайдбар был на всю ширину и при клике на айтем —  рендерился этот компонент. на десктопе понятно как будет выглядить, а с воображением "как сделать так, шоб на мобилках было юзабельно" проблемы
понятней не стало) ты еще не знаешь как будет выглядеть а уже знаешь что цссом не решить?)
источник

IN

Ilya Neron in React — русскоговорящее сообщество
Цссом можно все решить если нужно что-то отобразить по-другому на определенном разрешении или устройстве
источник