Нулевой объект проверки не работает - PullRequest
0 голосов
/ 03 мая 2018

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

constructor(){
    super();
    this.state = {
        warningMsg: 'No Warnings'
    }
    this.detail = {
        name: null,
        phone: null,
        email: null,
        location: null,
        extraDetail: 'Default' 
    }
}

handleSubmit(){
    const {DetailStore} = this.props;

    for (let value in this.detail) {
        console.log(value)
        if (value === null) {
            console.log('null found'); // i should see this in console but i don't
            this.setState({warningMsg:'Check Input'});
            break;
        }
    }
    DetailStore.entDetail(this.detail);
    console.log(DetailStore.getDetail,'Submitted'); 
}

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

'Значение' в вашем цикле for - это имя свойства. Вам необходимо проверить: if (this.detail[value] === null)

То, что вы на самом деле хотите, это:

const detailValues = Object.values(this.detail);

for (const value of detailValues) {
  console.log(value)
  if (value === null) {
    console.log('null found'); // i should see this in console but i don't
    this.setState({
      warningMsg: 'Check Input'
    });
    break;
  }
}
0 голосов
/ 03 мая 2018
Циклы

for..in повторяются по именам свойств объекта, а не по значению свойства. Если вы хотите перебрать значения объекта, лучше использовать Object.values вместо:

if (Object.values(this.detail).some(value => value === null)) {
  console.log('null found');
  this.setState({warningMsg:'Check Input'});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...