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

html中的data-reactid属性是什么?

尤钱明
2023-03-14
问题内容

在浏览某些页面的HTML时,我注意到其中一些页面使用此属性“ data-reactid”,例如:

 <a data-reactid="......" ></a>

该属性是什么,其功能是什么?


问题答案:

data- reactid属性是一个自定义属性,使React可以在DOM中唯一地标识其组件。

这很重要,因为React应用程序可以在服务器和客户端上呈现。在内部,React建立了对构成您的应用程序的DOM节点的引用的表示形式(简化版本如下)。

{
  id: '.1oqi7occu80',
  node: DivRef,
  children: [
    {
      id: '.1oqi7occu80.0',
      node: SpanRef,
      children: [
        {
          id: '.1oqi7occu80.0.0',
          node: InputRef,
          children: []
        }
      ]
    }
  ]
}

无法在服务器和客户端之间共享实际的对象引用,并且发送整个组件树的序列化版本可能很昂贵。当应用程序在服务器上呈现而React在客户端上加载时,它仅有的数据就是data- reactid属性。

<div data-reactid='.loqi70ccu80'>
  <span data-reactid='.loqi70ccu80.0'>
    <input data-reactid='.loqi70ccu80.0' />
  </span>
</div>

它需要能够将其转换回上面的数据结构。它的实现方式是具有独特的data-reactid属性。这称为 膨胀 组件树。

您可能还会注意到,如果React在客户端渲染,它会使用该data- reactid属性,即使它不需要丢失其引用也是如此。在某些浏览器中,它使用将应用程序插入DOM中,.innerHTML然后立即使组件树膨胀,以提高性能。

另一个有趣的区别是,客户端渲染的React
ID将具有增量整数格式(如.0.1.4.3),而服务器渲染的ID将以随机字符串作为前缀(如.loqi70ccu80.1.4.3)。这是因为该应用程序可能在多台服务器上呈现,并且没有冲突很重要。在客户端,只有一个渲染过程,这意味着可以使用计数器来确保唯一的ID。

React
15
document.createElement改为使用,因此客户端呈现的标记将不再包含这些属性。



 类似资料:
  • 问题内容: 我一直在某些人的工作中看到角色属性。我也使用它,但是我不确定它的效果。 例如: 要么: 要么: 此角色属性是否必要? 此属性更适合语义吗? 它会提高SEO吗? 可以在此处找到角色列表,但是我看到有人组成了自己的角色。是否允许或正确使用role属性? 有什么想法吗? 问题答案: 您看到的大多数角色都定义为ARIA 1.0的一部分,然后又合并到HTML5中。一些新的HTML5元素(对话框,

  • 问题内容: 为HTML元素创建属性时,该值有哪些规则? 问题答案: 对于HTML 4,技术上的答案是: ID和NAME令牌必须以字母([A-Za-z])开头,然后可以跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。 HTML 5更为宽容,只说一个id必须至少包含一个字符,并且不得包含任何空格字符。 在XHTML中,id属性区分大小写。

  • 问题内容: 在jQuery 1.6.1中进行更改之后,我一直在尝试定义HTML中属性和属性之间的差异。 查看jQuery1.6.1发行说明中的列表(在底部附近),似乎可以对HTML属性和属性进行如下分类: 属性:所有具有布尔值或UA计算得出的值,例如selectedIndex。 属性:可以添加到既不是布尔也不包含UA生成值的HTML元素中的“属性”。 有什么想法吗? 问题答案: 在编写HTML源代

  • 问题内容: 当像hidden属性这样的属性是boolean属性时,这意味着什么?有人可以用外行的术语解释吗? 问题答案: 2.5.2布尔属性 许多属性是布尔属性。元素上的布尔属性的存在表示真实值,而该属性的缺失表示错误值。 如果存在该属性,则其值必须为空字符串或该属性的规范名称的ASCII大小写不匹配的值,且没有前导或尾随空格。 布尔属性上不允许使用值“ true”和“ false”。为了表示一个

  • 问题内容: 在jQuery 1.6.1中进行更改之后,我一直在尝试定义HTML中属性和属性之间的差异。 查看jQuery1.6.1发行说明中的列表(在底部附近),似乎可以对HTML属性和属性进行如下分类: 属性:所有具有布尔值或UA计算得出的值,例如selectedIndex。 属性:可以添加到既不是布尔也不包含UA生成值的HTML元素中的“属性”。 有什么想法吗? 问题答案: 在编写HTML源代

  • 问题内容: 我读到要获取数组的长度,我使用的属性,例如。什么是属性?这是一堂课吗? 问题答案: 属性是字段的另一个术语。它通常是一个公共常量或可以直接访问的公共变量。在这种特殊情况下,Java中的数组实际上是一个对象,并且您正在访问表示数组长度的公共常量值。