componentDidUpdate получает триггеры на нескольких экранах

#javascript #reactjs #react-native #redux-thunk

#javascript #reactjs #react-native #переопределение-thunk

Вопрос:

Я использую redux-thunk для вызова API. Когда ответ возвращается с сервера, я перехватываю их на componentDidUpdate с помощью простой проверки следующим образом

 async componentDidUpdate(prevProps) {
     if (this.props.successCallin& amp;amp; !prevProps.successCallin&) {
          executeSomeCode();
     }
}
  

Проблема в том, что у меня 2 одинаковые проверки на 2 разных экранах, когда ответы возвращаются с сервера componentDidUpdate выполняются обе проверки. Следовательно, он запускает оба executeSomeCode() на обоих разных экранах. Как я предполагаю справиться с такого рода сценарием?

Комментарии:

1. откуда вы вызываете эту службу? с каждого экрана?

2. оба экрана вызывают один и тот же API, но с разными параметрами.

Ответ №1:

При вызове службы для определенного экрана вы можете использовать переменную уровня класса, которая может действовать как переключатель типа — true / false, где для this.switch изначально будет установлено значение false. при вызове службы просто обновите переменную класса на true и добавьте эту переменную в проверку логики if, как указано в приведенном выше примере.

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

Комментарии:

1. Вместо того, чтобы делать то, что вы предлагаете для переключения, я придумал другое решение (которое вдохновлено вашим решением) Я передаю дополнительный параметр в свой метод API и добавляю параметр в возвращаемый результат. Следовательно, метод в didUpdate может выполнять проверку логики. Поэтому я рассмотрю ваше предложение как свой ответ (: