Поведение для одиночного условия if (если нет, возвращать false) - PullRequest
1 голос
/ 16 июня 2019

Я смог опустить else return false для этого метода жизненного цикла React и все еще заставить его работать как нужно, возвращая ложное значение для нечетных чисел (value увеличивает на 1 от 0 - см. FreeCodeCamp challenge для остальной части кода), но я не понимаю, почему это работает таким образом.

shouldComponentUpdate(nextProps, nextState) {
    console.log('Should I update?');
    if (nextProps.value % 2 == 0) return true;
  }

Так как shouldComponentUpdate по умолчанию имеет значение true для React документы , я думал, что этоможет по-прежнему возвращать истину даже для нечетных значений.Я полагаю, что значение по умолчанию применяется только тогда, когда не указано никакого условия.

Если условие if, которое возвращает true, не выполняется и никакие другие условия не предоставлены, всегда ли JavaScript возвращает false?

Ответы [ 2 ]

2 голосов
/ 16 июня 2019

Если условие if, которое возвращает true, не выполнено и другие условия не предоставлены, всегда ли JavaScript возвращает false?

Краткий и буквальный ответ: нет . Значения JavaScript (даже логические) могут оцениваться как truey или falsy .

С учетом сказанного, давайте попробуем проанализировать, что происходит в методе вашего компонента.

  • Функция JavaScript без оператора return оценивается как undefined.

  • shouldComponentUpdate в React ожидает логическое значение.

  • Поскольку функция вернула undefined, она автоматически оценивается как falsy .

  • Тогда компонент не обновляется из-за возврата значения falsy .

Моя рекомендация:

Возьмите под свой контроль код.

Избегайте неожиданного поведения, подобного этому, поскольку оно может измениться в будущих версиях React.

Почему бы не троичный условный ?:

shouldComponentUpdate(nextProps, nextState) {
   return (nextProps.value % 2 == 0 ? true : false);
}
0 голосов
/ 16 июня 2019

javascript-значения всегда «правдивые» или «ложные» ... в данном случае тип возврата в неверном случае равен void, который равен «falsey», вместе с false, null, undefined (все, что назначено с помощью этой функции, станет неопределеннымв случае фальси) 0 и пустая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...