Size: a a a

React: русскоязычное сообщество

2020 October 04

A

Aleksandr in React: русскоязычное сообщество
у вас должна быть одна перерисовка
источник

A

Aleksandr in React: русскоязычное сообщество
две*
источник

A

Anton in React: русскоязычное сообщество
Да, этого невозможно избежать?
источник

A

Aleksandr in React: русскоязычное сообщество
Возможно, но это будет костыль, какая задача стоит?
источник

A

Anton in React: русскоязычное сообщество
Просто это в конечном итоге на user experience влияет (при изменении настроек все исчезает на миг), и как - то оптимизировать запросы, потому что данные с сервера приходят статичные.
источник
2020 October 05

A

Aleksandr in React: русскоязычное сообщество
🤔 вообще ни чего не должно исчезать, может вам тогда этот стейт и не нужен, если вы не хотите перерисовку в зависимости от него
источник

A

Anton in React: русскоязычное сообщество
Я в интернете находил похожие решения, было написано сделать отдельный context для обновлений и еще несколько (ни один не помог).
Думаю что на прямую в роут передавать значение, просто это до последнего избежать старался.

Просто ведь при изменении useState перерисовка как раз и должна происходить, так что это стандартное поведение (я так понял).

Спасибо!
источник

A

Aleksandr in React: русскоязычное сообщество
Ну да, при изменении стейта всегд происходит перерисовка, и это логично, если чуть точнее опишите задачу, скажу что вам нужно
источник

A

Anton in React: русскоязычное сообщество
APP.JS :
есть useState с данными о пользователе; функция, которая изменят данные о пользователе. В return определены роуты на каждую станицу, в том числе на страницу настроек пользователя (код app.js в 1 сообщении).

В компоненте (роуте) настроек пользователя :
useEffect, в котором получение данных с сервера (во время получения данных на странице отображается спиннер загрузки). И при взаимодействии пользователя с данными, вызывается функция обновления useState в app.js, что приводит к повторной перерисовке станицы, на которой пользователь находится (появляется по новой спиннер и заново отправляется запрос данных на сервер)
источник

A

Aleksandr in React: русскоязычное сообщество
а зачем?
источник

A

Aleksandr in React: русскоязычное сообщество
я как пользователь захожу изменяю свои данные, тебе не нужно еще раз подгружать эти измененные данные
источник

A

Aleksandr in React: русскоязычное сообщество
я уже их изменил и получил удачу
источник

A

Aleksandr in React: русскоязычное сообщество
они уже у тебя
источник

A

Aleksandr in React: русскоязычное сообщество
тебе просто нужно вернуть ошибку, что данные не были изменены, попробуй еще раз
источник

A

Anton in React: русскоязычное сообщество
В том то дело, что не надо, но из за перерисовки это происходит.
Там просто список настроек, если редактировать в конце списка то помимо мерцания список оказывается в самом начале
источник

A

Anton in React: русскоязычное сообщество
*прокрутка списка в самом начале
источник

A

Aleksandr in React: русскоязычное сообщество
так нет
источник

A

Aleksandr in React: русскоязычное сообщество
тебе вообще не надо обновлять данные с сервера
источник

A

Aleksandr in React: русскоязычное сообщество
тебе просто нужно получить от сервера ответ, что данные изменены
источник

A

Aleksandr in React: русскоязычное сообщество
все
источник