在浏览某些页面的HTML时,我注意到其中一些页面使用此属性“ data-reactid”,例如:
<a data-reactid="......" ></a>
该属性是什么,其功能是什么?
在浏览某些页面的HTML时,我注意到其中一些页面使用此属性“ data-reactid”,例如:
<a data-reactid="......" ></a>
该属性是什么,其功能是什么?
Answers:
的 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 15document.createElement
改为使用,因此客户端呈现的标记将不再包含这些属性。
这是一个自定义html属性,但在这种情况下,可能由Facebook React JS库使用。
数据属性通常用于各种交互。通常通过javascript。它们不会影响任何有关站点行为的内容,并且可以作为方便的方法出于任何目的传递数据。这是一篇可能会解决问题的文章:
http://ejohn.org/blog/html-5-data-attributes/
您可以通过在data-
任何标准属性安全字符串(不带空格或特殊字符的字母数字)之前添加前缀来创建数据属性。例如,data-id
在这种情况下data-reactid
这就是HTML数据属性。详情请参见:http : //html5doctor.com/html5-custom-data-attributes/
基本上,它只是您的自定义数据的容器,同时仍使HTML有效。它data-
加上一些唯一的标识符。
data-reactid
是React JavaScript库使用的自定义属性。开发用于Facebook和Instagram。