Reactjs中的innerRef是什么?
我知道什么是Ref。我面临的挑战是,我没有找到innerRef的任何官方文档。它还在使用吗 关于Reactjs中的innerRef是什么?,reactjs,Reactjs,我知道什么是Ref。我面临的挑战是,我没有找到innerRef的任何官方文档。它还在使用吗 关于innerRef我从以下方面了解到: 如果有人能告诉我什么是innerRef,那就足够了。谢谢 innerRef只是作者选择使用的自定义属性。它在React中没有特殊意义。从源代码看,似乎他们想要一种方法来区分Reactrefprop,但不知道为什么 innerRef不是标准的React属性。它是React Popper模块的一个属性,是 这是一个 可用于获取波普尔参考的函数 澄清: innerR
innerRef
我从以下方面了解到:
如果有人能告诉我什么是innerRef,那就足够了。谢谢
innerRef
只是作者选择使用的自定义属性。它在React中没有特殊意义。从源代码看,似乎他们想要一种方法来区分Reactref
prop,但不知道为什么 innerRef
不是标准的React属性。它是React Popper模块的一个属性,是
这是一个
可用于获取波普尔参考的函数
澄清:
innerRef
只是react popper中自定义组件(例如箭头)上的另一个属性
在我们希望访问由子组件创建的dom元素的情况下,这种模式变得有点常见。它也可以被命名为childRef
或任何其他有意义的名称(注意:ref
或childRef
,如果您正在使用的库使用一个特定的名称(如innerRef
)引用它,则该名称无效)
为什么选择innerRef?
它所做的是,它指向父组件中的函数。该函数将domNode/React实例作为参数,并将其存储为父组件的实例属性,以便父组件可以使用存储的dom访问子节点的属性(宽度、偏移、滚动顶部、子节点、dom上的事件侦听器等)
您的案例:
查看
Arrow
组件,我们可以看到innerRef
实际上是Popper
类的setArrowNode
函数,它将Arrow节点作为参数,并将其设置为Popper上的实例属性。而箭头
组件似乎是一种样式化组件,它引用React asinnerRef
的ref
属性(样式化组件的新版本使用ref
属性)。这意味着,如果您将arrowProps.ref
传递给Arrow
的innerRef
道具以外的任何其他道具,则react popper将无法按预期工作。innerRef
与其他道具一样,只是一个自定义道具名称,ReferenceBox
的作者在组件中的一个元素上使用asref
,以便ReferenceBox
的用户可以获得对它的引用。
<ReferenceBox innerRef={ref}>
<a
href="https://github.com/FezVrasta/react-popper"
target="_blank"
>
react-popper
</a>
</ReferenceBox>