为什么不能将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
希望能给你一个满意的答复!