169 похожих чатов

Слушайте, вот допустим есть: const [example, setExample] = useState( [] ) Т.е

стейт с каким-нибудь массивом. И если я хочу допустим изменить стейт, то могу передать функцию колбек: setExample( prev => [ ...prev ] )
Я так понимаю prev - это старое состояние стейта?

7 ответов

27 просмотров

Да

Стас- Автор вопроса
amzp
Да

Т.е грубо говоря можно просто передавать старое значение, а можно его как-бы в колбеке. А в чем преимущество?

Стас
Т.е грубо говоря можно просто передавать старое зн...

При передаче значения напрямую, оно может замкнуться. А при использовании коллбэка точно не замкнётся

Стас
Т.е грубо говоря можно просто передавать старое зн...

Насколько я понимаю, когда ты берешь значения предыдущего стейта из колбека, то реакт гарантирует, что значение будет равно последнему состоянию стейта, а если не из колбека то туда могут попасть значения из каких-то предыдущих состояний

0. Просто возвращать старое значение не меняя смысла и нет. 1. В коллбеке у тебя могут быть сложные вычисления или прочие тяжёлые операции, которые незачем делать на каждый рендер. 2. Ты можешь эту функцию setExample передать куда-то, например, в дочерний компонент через пропсы, и тогда у него не будет доступа к значению стейта на момент его рендера. 3. Этот колбек, меняющий стейт, поскольку это чистая функция, можно вообще объявить вне рендера, как статическую, и переиспользовать.

Стас- Автор вопроса
Chamie
0. Просто возвращать старое значение не меняя смыс...

Да, спасибо. Я теперь понимаю, что этот колбек позволяет более тесно работать именно с текущим стейтом. Видел иногда такую конструкцию, и нигде не видел инфы в чем ее плюсы. Может в доке где-то пропустил 💁🏽‍♂️

Chamie
0. Просто возвращать старое значение не меняя смыс...

Ну тут нет ничего специфичного, чего нельзя сделать без коллбэка. Суть в замыкании и только, а про него ты не сказал

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта