Проблема с условным рендерингом в React Native с использованием значения falsey - PullRequest
0 голосов
/ 05 сентября 2018
<Item stackedLabel disabled>
  <Label style={{ color: 'black' }}>{someLabel}</Label>
    {
      0 &&
      <Input style={{ color: 'grey' }} value={this.props.someprop} disabled />
    }
</Item>

Я создал snack , чтобы продемонстрировать, что мы можем использовать значение Falsey для условного рендеринга. Однако вышеприведенный код выдает мне ошибку

Нарушение инварианта: текстовые строки должны отображаться в компоненте

Однако, если мы заменим 0 на null / false, тогда все будет нормально?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

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

И перекусить не получается, так что на самом деле это не так.

Расширяя ответ Саида, фрагмент кода является эквивалентом

<Item stackedLabel disabled>
  <Label style={{ color: 'black' }}>{someLabel}</Label>
  0
</Item>

React Native не знает, что делать с нулем, и поэтому печатает ошибку.

0 голосов
/ 05 сентября 2018

Это потому, что React видит этот 0 как строку.

Просто конвертируйте его в логическое значение с помощью этого трюка:

!! ( все, что не логично )

// this is equal to false
!!(0)
...