Как сделать 2 условия в componentDidUpdate?

Как сделать в операторе if 2 условия в componentDidUpdate. Вот мой код:

componentDidUpdate(prevProps, prevState) {
    if (
      prevState.address_id !== this.state.address_id &&
      prevState.whoIsMetting !== this.state.whoIsMetting
    ) {
      console.info("hello")

    }
  } 

Он не запускает никаких событий, но если я использую их отдельно, он работает нормально. Мне нужно проверить оба утверждения одновременно. Можно ли сделать 2 условия в componentDidMount или есть другие способы?

но если я использую их отдельно, все работает нормально... ну когда проверяешь их по отдельности то у тебя другое состояние не так ли
Sagiv b.g 29.04.2019 13:14

Это проверит, изменились ли оба address_id и whoIsMetting. Возможно, вы захотите использовать || вместо &&, чтобы проверить, изменилось ли какое-либо значение.

Caramiriel 29.04.2019 13:15

@ Sagivb.g Мне нужно проверить их одновременно, тогда, если оба true запускают мою функцию

Yerlan Yeszhanov 29.04.2019 13:18

@Caramiriel Мне нужны оба состояния одновременно, мне не нужно ни то, ни другое

Yerlan Yeszhanov 29.04.2019 13:19

Так что код, который вы разместили, в порядке

Sagiv b.g 29.04.2019 13:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
706
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Если вам нужно, чтобы они оба были истинными, вы можете связать их:

componentDidUpdate(prevProps, prevState) {
    if (prevState.address_id !== this.state.address_id){
           if ( prevState.whoIsMetting !== this.state.whoIsMetting){
                // do stuff if both true;
           } else {
             // do stuff if first true and second false
           }
      } else {
          // do stuff if first false
      }
}

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

Dblaze47 29.04.2019 13:25

@Dblaze47 Спасибо! Это то, что я хочу. Я пару раз упомянул, что мне нужно, чтобы оба условия были истинными, почему все продолжают предлагать ответы с одной проверкой или || утверждение.

Yerlan Yeszhanov 29.04.2019 13:36

Ваша проблема в логике вашего if, а не в синтаксисе. Вы можете написать любой допустимый JavaScript внутри componentDidMount, так как это такая же функция, как и любая другая.

Написание двух функций if следующим образом:

if (prevState.address_id !== this.state.address_id)
...
if (prevState.whoIsMetting !== this.state.whoIsMetting) 
...

Сильно отличается от одновременной проверки обоих утверждений с помощью оператора &&. && означает, что оба должны быть истинными. Если вам нужен способ проверить их оба и получить тот же результат, как если бы вы использовали два if (как указано выше), тогда:

if (
      prevState.address_id !== this.state.address_id ||
      prevState.whoIsMetting !== this.state.whoIsMetting
    ) 

Выполню работу, так как вы проверяете одно OR другое, чтобы быть правдой.

Вы использовали &&, тогда условие будет истинным, если оба они были истинными, в противном случае, если вы хотите выполнить утверждение, если одно из них истинно, вы можете вместо этого использовать ||.

И если ваше состояние

prevState.address_id !== this.state.address_id

правда это проверит

prevState.whoIsMetting !== this.state.whoIsMetting

но если первое условие ложно, оно не будет проверять второе и сразу вернет false.

Другие вопросы по теме