React Native:你能根据字符串的存在有条件地渲染 JSX 吗?

Posted

技术标签:

【中文标题】React Native:你能根据字符串的存在有条件地渲染 JSX 吗?【英文标题】:React Native: Can you conditionally render JSX based on the existence of a string? 【发布时间】:2020-08-07 01:10:54 【问题描述】:

在我的 React Native 应用程序中,我尝试根据特定字符串是否存在有条件地呈现 <Text> 组件。我试着这样做:

<View>
  
    someString
    &&
    <Text>
      someString
    </Text>
  
</View>

这引发了错误Text strings must be rendered within a &lt;Text&gt; component。我是这样做的,效果很好。

<View>
  
    someString
    ?
    <Text>
      someString
    </Text>
    :
    null
  
</View>

我认为问题在于使用第一种方法时,它试图实际呈现字符串,而不是检查它的存在。不过我想使用第一种方法,因为它更简洁,而且我在代码的其他地方使用了相同的约定。

有谁知道是否可以像这样使用&amp;&amp; 而不是?+:

【问题讨论】:

你总是可以制作一个组件const OptionalTextString = (string) =&gt; string ? &lt;Text&gt;string&lt;/Text&gt; : null; &amp;&amp; 运算符返回虚假值的短路。例如assert(typeof ('' &amp;&amp; 1), 'string'),所以如果是空字符串,它将返回空字符串。您可以将条件转换为布尔值。试试!!someString &amp;&amp; &lt;Text&gt;someString&lt;/Text&gt; 【参考方案1】:

这是因为 empty 字符串是 false-y 意味着它将在组件中呈现。如果不将字符串包装在 Text 组件中,则无法呈现字符串(即使是像 '' 这样的空字符串)。

https://www.freecodecamp.org/news/conditional-rendering-in-react-using-ternaries-and-logical-and-7807f53b6935/

空字符串值与数字有同样的问题。但是因为渲染的空字符串是不可见的,所以这不是您可能必须处理甚至会注意到的问题。但是,如果您是一个完美主义者并且不希望在您的 DOM 上出现空字符串,您应该采取与我们对上述数字所做的类似的预防措施。

【讨论】:

以上是关于React Native:你能根据字符串的存在有条件地渲染 JSX 吗?的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 服务器驱动的 ui

你能在 Ubuntu 上构建 React Native 应用程序(Android 应用程序)吗?

在 React Native 中,有没有办法根据数据库中的布尔值更改按钮的颜色?

我正在使用 React Native axios 提取数据。我可以在控制台屏幕上看到我捕获的数据。但我无法在应用程序中显示。你能帮助我吗?

React Native CFBundleIdentifier 不存在

react中子组件的渲染与react native不同吗?