当前位置: 首页 > 面试题库 >

反应: vs数组

卫深
2023-03-14
问题内容

我正在阅读React文档,并对主题Fragment感到困惑。因为我们基本上可以在React中返回一个数组,所以在什么情况下需要<Fragements />

这是一个代码示例:

const ReturnArray = () => {
  const items = [
    <div key={1}>Item 1</div>,
    <div key={2}>Item 2</div>,
    <div key={3}>Item 3</div>,
  ]
  return items
}

const ReturnFragments = () => {
  const items = 
    <React.Fragment>
      <div key={1}>Item 1</div>
      <div key={2}>Item 2</div>
      <div key={3}>Item 3</div>
    </React.Fragment>

  return items
}

我认为他们是一样的。

大多数现有的话题谈“键警告问题”像这样在github上,但我只是想知道的用例<Fragments />

编辑:

请告诉我是否有任何歧义。

再具体一点:

请解释之间的差异<ReturnArray /><ReturnFragments />。它们都返回多个无用<div>标签的元素。为什么要花多余的<React.Fragment />钱呢?


问题答案:

官方文件说

使用数组表示法与普通JSX有一些令人困惑的区别:

  1. 数组中的子项必须用逗号分隔。

  2. 数组中的子代必须具有密钥,以防止React发出密钥警告。

  3. 字符串必须用引号引起来。

为了简单起见,React提供了Fragment组件,可以代替数组使用。

考虑如何使用数组包装多个子级

render() {
 return [
  "Some text.",
  <h2 key="heading-1">A heading</h2>,
  "More text.",
  <h2 key="heading-2">Another heading</h2>,
  "Even more text."
 ];
}

以及如何使用片段来实现。

render() {
  return (
    <Fragment>
      Some text.
      <h2>A heading</h2>
      More text.
      <h2>Another heading</h2>
      Even more text.
    </Fragment>
  );
}

直接取自官方文件。

片段也可以如下编写。

render() {
      return (
        <>
          Some text.
          <h2>A heading</h2>
          More text.
          <h2>Another heading</h2>
          Even more text.
        </>
      );
    }


 类似资料:
  • 我正在使用JWT创建和验证令牌,并将令牌存储在cookie中。(react前端vs Nodejs后端) 我对react cookie与universal cookie和react cookie的用法感到困惑。 这些之间有什么区别,在后端设置cookie与在前端设置cookie有什么区别?

  • 我很困惑组件和react类之间有什么区别? 什么时候在反应类上使用组件?看起来组件是一个类,createClass创建了一个组件。 https://facebook.github.io/react/docs/top-level-api.html 反应组件 这是使用ES6类定义React组件时的基类。有关如何将ES6类与React一起使用,请参见可重用组件。有关基类实际提供的方法,请参见组件API。

  • 我正在尝试使用react钩子创建一个悬停以显示div,我遇到了以下问题: 第69:31行:在函数“renderHideOptionalClauseTrigger”中调用React钩子“useState”,该函数既不是React函数组件,也不是自定义React钩子函数React钩子/钩子规则 搜索关键字以了解有关每个错误的更多信息。 以下是我的代码库:

  • 我想在加载组件时进行api调用。我有以下代码: getProfile细节功能: 在这里,函数"getProfile细节"正在进行api调用,然后调度一个redux存储操作,该操作正在设置配置文件细节。 问题是,每次调用getProfile细节时,redux存储都会更新,组件会重新渲染,这反过来会触发组件didMount,并进入无休止的循环。 请建议如何构造这个。

  • 问题内容: 是否有将功能放置在react组件中的偏好?我仍在学习反应,因此只想找出最佳做法。 问题答案: 每次渲染都会在render方法中创建一个函数,这会对性能造成轻微的影响。如果将它们放入渲染中也很麻烦,这是一个更大的原因,您不必滚动渲染中的代码即可查看html输出。始终将它们放在课堂上。 对于无状态组件,最好将函数保留在main函数之外,而传递props,否则该函数也会在每个渲染器中创建。我

  • 问题内容: 以下是React中的反模式吗?我喜欢这种模式,因为当实例化一个组件时,它在静态函数中为我提供了上下文。然后,我可以导入该类并调用静态方法来修改状态。还是可以通过更好的方式来完成? 问题答案: 显然,这取决于条件,可能是一种反模式,也可能是一个错误。静态类方法不应与类实例一起使用。绑定到特定的组件实例和用途,这只能证明类是单例是合理的(尽管单例也经常是反模式)。如果期望有多个类实例,那么