Ven*_*sky 14 reactjs react-ref
为什么不能将 ref 传递给 React 中的功能组件?
与无法向其传递引用的类组件相比,函数组件有何不同?
为什么那不可能呢?
注意:我提出这个问题是因为我总是看到有关如何将 ref 与功能组件一起使用的解释,并且您需要使用fowardRef
,但没有人解释 React 如何处理功能组件,从而无法将 ref 传递给它,它总是解释如何去做,但从来没有解释为什么你需要这样做。
当您传递ref
给类组件时,它会(通过ref.current
)指向实际的类实例。(看旧版 React 文档中的“访问引用”。)这使您可以访问该实例的字段。但是函数组件没有实例或字段,因此没有任何东西可以指向,也ref
没有任何东西可以使用。
而且,需要明确的是,forwardRef
这并没有真正改变这一点。forwardRef
还是不让ref
指向该实例,因为仍然没有一个。相反,forwardRef
您可以将引用“转发”到另一个对象:嵌套组件(通常是 DOM 元素)或您定义的自定义对象(使用useImperativeHandle
)。
据推测,如果 React 今天是从头开始设计的,ref
结果会有所不同。但由于它的历史 \xe2\x80\x94 因为它对于类组件有特殊含义 \xe2\x80\x94ref
被保留。
但是,您可以使用另一个 prop 名称,例如innerRef
并将其用于转发,如为什么,到底,我们需要 React.forwardRef?。
归档时间: |
|
查看次数: |
7744 次 |
最近记录: |