【问题标题】:React Native what exactly is the <> (empty) componentReact Native <>(空)组件到底是什么
【发布时间】:2020-05-02 05:44:06
【问题描述】:

在 React Native 中,您可以将一组组件封装在一个 &lt;View&gt;(或类似)组件中。您还可以将一组组件封装为&lt;&gt;&lt;/&gt;。这些是什么?他们只是转换为基本视图吗?这可能不是一个好的做法,但它不会发出警告,也不会崩溃。

【问题讨论】:

    标签: javascript react-native components jsx


    【解决方案1】:

    React v16.2 的一大亮点是 Fragments。 如果您正在使用 React 项目,您可能熟悉在您的 render() 中使用 &lt;div&gt;&lt;span&gt; 包装您的子组件。

    Fragment 是一流的组件,您可以使用它来包装您的子组件和元素,以代替 &lt;div&gt;&lt;span&gt; 标记。像这样,

    render(){
       return(
          <Fragment> 
            <h2>Heading</h2>
        <ChildA />
          </Fragment>
       );
    }
    

    render(){
       return(
          <React.Fragment> 
            <h2>Heading</h2>
        <ChildA />
          </React.Fragment>
       );
    }
    

    作为一种快捷方式,您还可以使用空标签&lt;&gt;&lt;/&gt; 来表示片段。像这样,

    render(){
       return(
          <> 
            <h2>Heading</h2>
        <ChildA />
          </>
       );
    }
    

    【讨论】:

      【解决方案2】:

      在反应中 &lt;&gt; and &lt;/&gt; 只是 &lt;React.Fragment&gt; 的语法糖。它的基本意思是所有组件都应该包装在父元素中。因此,在不影响整个原理图设计的情况下 提供了一个包装器来将所有元素包装在其中。

      <React.Fragment>
      // your code
      </React.Fragment>
      

      相同
      <>
      // your code 
      </>
      

      希望对你有帮助

      【讨论】:

      • 谢谢。如果我们在 和 > 之间根本没有代码会发生什么,例如在我们什么都不想要的情况下在三元运算符中?
      • 在视图树中添加时总是建议 null 而不是空片段
      • 谢谢。这种情况下 null 的代码是什么?
      • @smartblonde 为什么要“渲染” null 呢?也许遗漏了一些东西,但最终 JSX 被用来向 DOM 渲染一些东西。您可能会问是否在某些经过验证的条件下不想渲染。然后在这种情况下,条件渲染很有用,并且基本上将这种情况下的变量分配给 null
      • > 还允许避免重复额外的
        可能需要且未在 DOM 中呈现
      【解决方案3】:

      除了他所说的之外,它还用于嵌入许多 HTMLElements,例如你不需要将它们嵌套到 &lt;div&gt; 中。

      例如,您可能有这样的用例

      render() {
        return (
          <React.Fragment>
            <ChildA />
            <ChildB />
            <ChildC />
          </React.Fragment>
        );
      }
      
      

      更多解释可以阅读React Official Documentation Fragment

      【讨论】:

        【解决方案4】:

        这是Fragment 组件的 React 快捷方式。

        你可以这样写:

        import React, { Component } from 'react'
        
        class Component extends Component {
          render() {
            return <> <ComponentA/> <ComponentB/> </>
          }
        }
        

        或者不使用快捷方式并导入Fragment组件

        import React, { Component, Fragment } from 'react'
        
        class Component extends Component {
          render() {
            return <Fragment> <ComponentA/> <ComponentB/> </Fragment>
          }
        }
        
        

        你必须知道,你不能使用任何快捷键或道具。

        这是official documentation

        希望对你有帮助!

        【讨论】:

        • 啊,好的!我查找了 和 > 本身,但没有得到任何结果。很容易知道,因为使用看似空的组件似乎是错误的。我会尽可能将其标记为答案。
        猜你喜欢
        • 1970-01-01
        • 2019-12-28
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 2018-05-25
        • 2018-11-16
        • 1970-01-01
        • 2020-05-17
        相关资源
        最近更新 更多