为什么你不能在 react 中将 ref 传递给功能组件?



为什么不能将ref传递给react中的功能组件?

函数组件与类组件相比有什么不同,你不能传递一个ref给它?

为什么这是不可能的?

注释:我之所以提出这个问题,是因为我总是看到关于如何在功能组件中使用ref的解释,并且你需要使用fowardRef,但是没有人解释react如何处理功能组件,使得不可能将ref传递给它,它总是解释如何为什么要呢?你必须去做。

有两个方面:

  • 函数组件没有ref属性,因为它们没有像类组件那样的实例。因此你必须转发REF
  • 你不能使用ref道具,因为它是保留的。

但是,您可以使用其他prop名称,如innerRef,并使用它进行转发。

用例子检查更详细的答案:为什么我们需要React.forwardRef?

我在谷歌上搜索同样的问题:为什么不能像React中的道具一样传递ref ?我在React文档中找到了答案:

上面的例子有一个警告:refs不会通过。那是因为裁判不是道具。和key一样,React对它的处理方式也不同。如果你给HOC添加一个ref,这个ref将指向最外层的容器组件,而不是被包装的组件。

https://reactjs.org/docs/forwarding-refs.html

希望能给你一个满意的答复!

最新更新