Проблема с условным рендерингом в React Native с использованием значения falsey

<Item stackedLabel disabled>
  <Label style = {{ color: 'black' }}>{someLabel}</Label>
    {
      0 &&
      <Input style = {{ color: 'grey' }} value = {this.props.someprop} disabled />
    }
</Item>

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

Invariant Violation: Text strings must be rendered within a component

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
166
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

!! (ничего не логическое)

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

Не совсем, поэтому я создал snack, чтобы продемонстрировать, что React правильно обрабатывает 0 как ложное значение. Однако я не могу быть уверен, что это проблема NativeBase.

Isaac 05.09.2018 08:16

В ReactJS (не родном) он обрабатывает 0 как строку. Таким образом, он принимает это как строку

Saeed 05.09.2018 08:20
Ответ принят как подходящий

I've created a snack, to demo that we can use falsey value for conditional rendering.

А закуска не получается, так что на самом деле дело обстоит не так.

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

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

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

Я не понимаю? Какая часть закуски не подходит?

Isaac 09.09.2018 01:50

Когда вы запускаете симулятор, вы не видите Change code in the editor and watch it change on your phone! Save to get a shareable url. из-за 0, что явно ожидается

Isaac 09.09.2018 01:51

@Isaac запустите закуску на android и вы увидите ошибку

vonovak 09.09.2018 02:10

хммм, похоже, действительно так. Спасибо, что дал мне знать!

Isaac 09.09.2018 02:23

Другие вопросы по теме