Size: a a a

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

2020 November 24

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Yulia
Всем привет! Подскажите как лучше организовать такую задачу: работа с формами, поля и количетсво полей приходят с бека (обычные инпуты). Полей для формы может прийти 10, может 20 и тд.

Поля приходят в таком виде:
`[{ field: a, value: 'A-value'}, { field: b, value: 'B-value'}].

Значение пользователь может изменить + по итогу может откатить свои изменения (соответственно нужно хранить изначальное значение).

Если я эти все данные по полям пихаю в 1 стейт, значит у них будет общий onChange хандрел, который будет подписан в useCallback на изменения всей формы. Соответственно при изменении 1-го поля, перерендериваются все другие. Как в этом случае лучше хранить в стейте текущее состояние каждого из полей?

(юзать formin, react-form-hook и тд, к сожалению, не можем использовать, нужно писать руками)
Если идти по пути реакт вей, то от лишних рерндеров защищаться мемоизацией компонентов - инпутов
источник

D

Daniil in React — русскоговорящее сообщество
щас почитаю
Делаю туду по видео на ютубе , там на классах , а я стараюсь переписывать на hooki и там все работает в таком порядке .
Щас почитаю , спасибо !)
@undefned спасибо !
источник

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
Yulia
Всем привет! Подскажите как лучше организовать такую задачу: работа с формами, поля и количетсво полей приходят с бека (обычные инпуты). Полей для формы может прийти 10, может 20 и тд.

Поля приходят в таком виде:
`[{ field: a, value: 'A-value'}, { field: b, value: 'B-value'}].

Значение пользователь может изменить + по итогу может откатить свои изменения (соответственно нужно хранить изначальное значение).

Если я эти все данные по полям пихаю в 1 стейт, значит у них будет общий onChange хандрел, который будет подписан в useCallback на изменения всей формы. Соответственно при изменении 1-го поля, перерендериваются все другие. Как в этом случае лучше хранить в стейте текущее состояние каждого из полей?

(юзать formin, react-form-hook и тд, к сожалению, не можем использовать, нужно писать руками)
мемоизировать поля и отдавать им голые данные при изменении которых они будут перерисовываться.
источник

D

Daniil in React — русскоговорящее сообщество
Никогда не мутируйте this.state напрямую, так как более поздний вызов setState() может перезаписать эту мутацию. Относитесь к this.state как к иммутабельному объекту. 😅😅😅 Из доки
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Daniil
щас почитаю
Делаю туду по видео на ютубе , там на классах , а я стараюсь переписывать на hooki и там все работает в таком порядке .
Щас почитаю , спасибо !)
@undefned спасибо !
let user = {name: "Biba"}
let admin = user

admin.name = "Boba"

Что будет в user.name?
источник

D

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

GO

Green Orange in React — русскоговорящее сообщество
lupa
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Daniil
boba
Почему?
источник

MG

Magomed Gadzhiev in React — русскоговорящее сообщество
Dmitriy Shuleshov
let user = {name: "Biba"}
let admin = user

admin.name = "Boba"

Что будет в user.name?
Объекты в js копируются не по значению, а по "ссылке"
источник

А

Алексяо in React — русскоговорящее сообщество
Объект один и тот же
источник

D

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

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Алексяо
Объект один и тот же
Я вам вопрос задавал?
источник

Y

Yulia in React — русскоговорящее сообщество
Александр Бакиматов
мемоизировать поля и отдавать им голые данные при изменении которых они будут перерисовываться.
Да, но у меня получается все поля хранятся в 1 стейте, условно form. На изменения полей, есть хендлер, который подписан на изменения form. Соотвественно при изменение одного из значений в form, хендлер пересоздается и все инпуты перерендериваются, потому что ссылка пришла на новый onChange. Не совсем понимаю, как в этом случае может помочь memo.
источник

D

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

S

Stanislav in React — русскоговорящее сообщество
Daniil
Никогда не мутируйте this.state напрямую, так как более поздний вызов setState() может перезаписать эту мутацию. Относитесь к this.state как к иммутабельному объекту. 😅😅😅 Из доки
state.count += 1
setState(state) // same state, no rerender
источник

А

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

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Daniil
мы ведь не копию делаем
Хорошо. В первую очередь советую прочесть документацию реакта, а не смотреть видео
источник

А

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

S

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

D

Daniil in React — русскоговорящее сообщество
Dmitriy Shuleshov
Хорошо. В первую очередь советую прочесть документацию реакта, а не смотреть видео
Все равно спасибо1
источник