стейт с каким-нибудь массивом. И если я хочу допустим изменить стейт, то могу передать функцию колбек: setExample( prev => [ ...prev ] )
Я так понимаю prev - это старое состояние стейта?
Да
Т.е грубо говоря можно просто передавать старое значение, а можно его как-бы в колбеке. А в чем преимущество?
При передаче значения напрямую, оно может замкнуться. А при использовании коллбэка точно не замкнётся
Насколько я понимаю, когда ты берешь значения предыдущего стейта из колбека, то реакт гарантирует, что значение будет равно последнему состоянию стейта, а если не из колбека то туда могут попасть значения из каких-то предыдущих состояний
0. Просто возвращать старое значение не меняя смысла и нет. 1. В коллбеке у тебя могут быть сложные вычисления или прочие тяжёлые операции, которые незачем делать на каждый рендер. 2. Ты можешь эту функцию setExample передать куда-то, например, в дочерний компонент через пропсы, и тогда у него не будет доступа к значению стейта на момент его рендера. 3. Этот колбек, меняющий стейт, поскольку это чистая функция, можно вообще объявить вне рендера, как статическую, и переиспользовать.
Да, спасибо. Я теперь понимаю, что этот колбек позволяет более тесно работать именно с текущим стейтом. Видел иногда такую конструкцию, и нигде не видел инфы в чем ее плюсы. Может в доке где-то пропустил 💁🏽♂️
Ну тут нет ничего специфичного, чего нельзя сделать без коллбэка. Суть в замыкании и только, а про него ты не сказал
Обсуждают сегодня