html中的data-reactid属性是什么?
当我浏览某些页面的HTML时,我注意到其中一些使用了如下的属性“data-reactid”:
<a data-reactid="......" ></a>
这个属性是什么,它的function是什么?
data-reactid
属性是一个使用的自定义属性,以便React可以在DOM中唯一标识其组件。
这很重要,因为React应用程序可以在服务器以及客户端上呈现 。 内部React构build了构成应用程序的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
属性,即使它不需要丢失其引用。 在某些浏览器中,它使用.innerHTML
将应用程序插入到DOM中,然后它会立即膨胀组件树,从而提高性能。
另一个有趣的区别是,客户端渲染的React ID将具有递增的整数格式(如.0.1.4.3
),而服务器渲染的则会以随机string(如.loqi70ccu80.1.4.3
)为.loqi70ccu80.1.4.3
。 这是因为应用程序可能在多个服务器上呈现,并且没有冲突是很重要的。 在客户端只有一个渲染过程,这意味着计数器可以用来确保唯一的ID。
React 15改为使用document.createElement
,所以客户端渲染的标记将不再包含这些属性。
这是一个自定义的HTML属性,但在这种情况下,可能是由Facebook的React JS库使用。
看看: http : //facebook.github.io/react/
HTML5中的自定义数据属性
想在我的回答中引用Ian的评论:
这只是元素上的一个属性(一个有效的属性),可以用来存储关于它的数据/信息。
这段代码稍后在事件处理程序中检索它,并使用它来查找目标输出元素。 它有效地存储了文本应该输出的div的类。
reactid
只是一个后缀,你可以在这里有任何名字,例如: data-Ayman
。
如果你想find差异检查在这个答案和评论中的小提琴。
数据属性通常用于各种交互。 通常通过javascript。 他们不影响任何关于网站行为的任何东西,并作为一种方便的方法来传递数据用于任何需要的目的。 这里有一篇文章可以解决这个问题:
http://ejohn.org/blog/html-5-data-attributes/
您可以通过将数据前缀添加到任何标准属性安全string(不带空格或特殊字符的字母数字)来创build数据属性。 例如, data-id
或者在这种情况下是data-reactid
这是HTML数据属性。 有关更多详细信息,请参阅: http : //html5doctor.com/html5-custom-data-attributes/
基本上它只是你的自定义数据的容器,同时仍然使HTML有效。 这是data-
加上一些独特的标识符。