Рубрики
Без рубрики

Доступ к состоянию реагирования сразу после установки

Фото Селсо на Unsplash Поскольку я просматривал вопросы переполнения стека, я заметил, что много … с меткой React, JavaScript.

фото Цельсо на Неспособный

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

Атмосфера Пример вопроса На переполнении стека.

Я много раз наткнулся за то, что не знал о SetState быть асинхронной операцией.

Как получить доступ к значению состояния сразу после его установки?

😬 Воспроизведение проблемы

Вот код, который показывает доступ к значению состояния ( clickcounts ) сразу после установки его синхронно.

И давайте посмотрим на логическую ошибку.

Консоль.log не имеет доступа к обновленному значению состояния, хотя вызов сделан после SetState Анкет

😒 обходной путь (не рекомендуется)

Как SetState это операция, вы можете просто подождать, пока значение не будет установлено React.

Вы можете ждать определенный период, чтобы получить доступ к обновленному состоянию, используя settimeout Анкет

Тада 🎉. Это работает правильно?

Да Но нет, на данный момент вы просто молитесь 🙏) это SetState Заканчивается, прежде чем получить доступ к штату в settimeout Анкет

А также, вам нужно сохранить событие, чтобы иметь возможность получить доступ к аргументам события, как показано в строке № 2 ( e.persist () ).

Ссылаться на Объединение событий Для E.Persist.

😄 рекомендую способы

Есть два способы, как упоминалось в официальной документации React.

  1. Используя обратный вызов, переданный SetState Анкет
  2. Используя ComponentDidupdate метод жизненного цикла

Давайте рассмотрим их обоих.

1. Использование обратного вызова, переданного в SetState

SetState имеет следующее подпись Анкет

Обратный вызов вызывается после того, как состояние обновилось с использованием Обновляющий Метод, таким образом, обратный вызов имеет доступ к обновлению this.state Анкет

Вот обновленный код и демонстрация.

2. Использование метода жизненного цикла ComponentDidupDate

React Documentation ” Обычно рекомендует ” с помощью ComponentDidupdate Анкет

Я не смог найти причину для этого, но я думаю, потому что это потому, что ComponentDidupdate имеет доступ к предыдущему реквизиту и предыдущему состоянию (а также к обратному обращению в качестве моего демонстрации).

Вот код с использованием ComponentDidupdate Анкет

И эта демонстрация показывает, что ComponentDidupdate

  1. имеет доступ к обновленному значению состояния.
  2. вызывается перед методом обратного вызова Setstate.

👋 Раздвигающие слова

Честно говоря, я использовал только обратный вызов для доступа к обновленной стоимости, потому что я узнал только о рекомендуемом способе использования ComponentDidupdate При написании этого блога 😝).

И вы можете поиграть с демонстрацией на CodeSandbox Анкет

Пост Доступ к состоянию React сразу после установки его появился первым на Технический блог Sung Анкет

Оригинал: “https://dev.to/dance2die/accessing-react-state-right-after-setting-it-2kc8”