Как это условие ложно? - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю веб-приложение в Typescript с помощью React, в моем componentDidMount() есть оператор if, чтобы изменить состояние компонента и повторно выполнить его при определенных условиях. Но я почему-то не могу понять, почему выражение продолжает возвращать false. У кого-нибудь есть идея или объяснение?

componentDidMount() {
if (this.props.altSrc != this.state.currentSrc && this.state.errored == true) {
  this.setState({...this.state, errored: false, currentSrc: this.props.altSrc})
  } 
}

Значение переменных выглядит следующим образом:

  • altSrc = "www.xxx.com/not-found.jpg"
  • currentSrc = "www.xxx.com/image.jpg"
  • ошибка = истина

С моей точки зрения, outcoe должно быть истинным, так как две строки не равны друг другу и возвращают true, а когда ошибка истинна, она также должна возвращаться. Итак, мы имеем true && true => true.

Итак, я спрашиваю, что мне здесь не хватает в условии оператора if?

Фон

То, что этот код должен сделать, это отобразить изображение на экране, но если изображение не найдено, оно должно заменить изображение (currentSrc) альтернативным изображением (altSrc). Когда альт. изображение не найдено метод рендеринга возвращает ноль. Все работает отлично. Мне удалось получить уведомление, когда изображение не загружается, а затем установить значение «true», только если условие if создает проблемы.

1 Ответ

0 голосов
/ 15 ноября 2018

Иногда old-skool - это путь ... каков ваш вывод?

console.log(this.props.altSrc, typeof this.props.altSrc, this.state.currentSrc, typeof this.state.currentSrc, (this.props.altSrc != this.state.currentSrc));
console.log(this.state.errored, typeof this.state.errored, this.state.errored == true);

if (this.props.altSrc != this.state.currentSrc && this.state.errored == true) {
    console.log('WE MADE IT INTO THE CONDITION');
    this.setState({...this.state, errored: false, currentSrc: this.props.altSrc})
} 

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

const altSrc = 'abcde' as string;
const currentSrc = 'fghij' as string;
const errored = true as boolean;

console.log(altSrc, typeof altSrc, currentSrc, typeof currentSrc, (altSrc != currentSrc));
console.log(errored, typeof errored, errored == true);

if (altSrc != currentSrc && errored == true) {
    console.log('WE MADE IT INTO THE CONDITION');
} 

ВЫХОД:

abcde string fghij string true
true boolean true
WE MADE IT INTO THE CONDITION
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...