这种情况怎么假?

时间:2018-11-15 13:36:07

标签: typescript if-statement conditional-statements

我正在使用React在Typescript中构建一个Web应用程序,我的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”
  • 错误= true

我认为结果是正确的,因为两个字符串彼此不相等,并且返回true,并且当错误为true时,它也应该返回。因此,我们有true && true => true。

所以我要问,如果使用if语句,我在这里想念什么?

背景

此代码应该执行的操作是将图像渲染到屏幕上,但是当找不到图像时,应使用替代图像(altSrc)替换图像(currentSrc)。当alt。找不到图像render方法返回null。一切正常,我设法在图像不加载时得到通知,然后将错误设置为true,只是if的情况给了麻烦。

1 个答案:

答案 0 :(得分:1)

有时候是老套的方式...您的输出是什么?

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