为什么 React ref 是一个特殊功能,而不是常规道具?

问题描述 投票:0回答:1

我觉得用

forwardRef
useImperativeHandle
完成的繁琐工作可以通过父级中的常规引用(来自
useRef()
)来完成,作为道具传递给子级,反过来将其填充到
useEffect()
。难道我错了?

reactjs
1个回答
0
投票

将 ref 作为 prop 传递并将其填充到

useEffect
中的方法可以在简单的情况下工作。但它有一些缺点:

  1. 这是不太惯用的 React 代码,这可能会让其他开发人员感到困惑。
  2. 它不提供相同级别的封装和API控制。事实上,
    useImperativeHandle
    允许您显式定义组件的公共 API。您可以只公开您想要的方法,而不是整个 DOM 节点或组件实例。这有助于保持更好的封装和更干净的 API。
  3. 如果实施不仔细,可能会导致不必要的重新渲染。

不过我想你也不是完全错了。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.