Size: a a a

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

2021 June 20

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Или видимо кто то думает что это что то дает

setFoo('xxx');

setFoo((val) => {
   localStorage.setItem('key', val)
   return val;
});

Нет, все еще то же самое, что и

localStorage.setItem('key', 'xxx')
setFoo('xxx');
источник

A

Ali in React — русскоговорящее сообщество
И для компонента, по которому последует перерисовка
источник

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Конечно тут пора бы определить, что такое текущий стейт
источник

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Я текущим стейтом называю стейт, на основе которого произведен рендер, который мы видим на экране
источник

I

IceBerg in React — русскоговорящее сообщество
useEffect(() => {
   return () => setState(state => localStorage("state", state))
 }, []);
Вот пример, где во время размонтирования сетается в сторедж "текущее", на экране, значение. По другому ты навряд напишешь
источник

S

SeanWoo in React — русскоговорящее сообщество
Разницы нет да, это то что я говорил выше, зачем ждать обновления стейта если нужные данные уже есть и с ними сразу можно начать работать
источник

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Это абсолютно верно, единственный способ. Просто это не нужно в подобном сценарии
источник

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Да, я о том же
источник

I

IceBerg in React — русскоговорящее сообщество
а если ты сетаешь результаты вычислений например?
источник

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Как то нет особой разницы

const foo = calculate();
localStorage.setItem('foo', foo)
setFoo(foo);
источник

I

IceBerg in React — русскоговорящее сообщество
setFoo( count+1);
setFoo( count+1);
setFoo( count+1);
Будешь подсчитывать, что нужно сетать теперь count+3 ?
источник

I

IceBerg in React — русскоговорящее сообщество
хотя это хрень, там не будет +3)
источник

VK

Vladimir Kurchatkin in React — русскоговорящее сообщество
Я понял о чем ты, но в первую очередь не надо писать кода, который сетить один и тот же стейт три раза подряд, тогда не будет таких проблем
источник

S

SeanWoo in React — русскоговорящее сообщество
++
источник

A

Ali in React — русскоговорящее сообщество
Главное это понимать, ибо это входит в "топ" вопросов на совбесах для джун-мид И нужно так же понимать как с этим бороться, если все же нужно написать так
источник

ДЖ

Дон Жиес in React — русскоговорящее сообщество
Не знаю как с этим управиться, но сработало this.props.history.push("/path")
источник

C

Cool29 in React — русскоговорящее сообщество
Ну да. Просто withRouter это все через пропсы прокидывает
источник

ДЖ

Дон Жиес in React — русскоговорящее сообщество
хм. Для классового компонента есть this.props.history.push, для функционального есть хук. Зачем ещё и это?
источник

ДЖ

Дон Жиес in React — русскоговорящее сообщество
Ну то есть, зачем прокидывать через пропсы, если с любого классого компонента вниз по дереву можно вызвать history.push?
источник

G

Georgy in React — русскоговорящее сообщество
Спасибо, попробую
источник