@Vadim1899

Можно ли явно изменять пропсы/стейт?

Привет!
Нашел пример интеграции js либы InteractJS в реакт проект

в файле hooks.ts мы создаем стейт _position, в котором храним xy коодринаты элемента, угол поворота и увеличение. Далее на 31 строке мы раскрываем объект _position (x, y, width, height).

На 45 строке мы сначала явно изменяем изменяем x, y, width, height, а затем только кидаем в стейт через setPosition.

Если же убрать явное изменение x, y, width, height и setPosition сделать такого вида:
setPosition({
          width,
          height,
          x: x + event.dx,
          y: y + event.dy,
        })

, то при перемещении синего квадрата он будет возвращаться в исходное положение. Полагаю, из-за того что функция setPosition асинхронная.

Соответственно вопрос: можно ли так явно изменять стейт, пропсы?
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 1
w13vitaliy
@w13vitaliy
self-taught developer since 2020
Стейт изменять можно так как компонент будет "перерисовываться". А пропс нет так как от них могут зависит другие компоненты и компоненты не будут перерисовываться (если это будет при клике). При изменение пропсов это будет side effect. Почитайте про эту тему "SideEffects в ReactJS"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы