我看到,React.forwardRef
似乎是一种被认可的方式,可以将一个引用从 response 文档传递给一个子功能组件:
const FancyButton = React.forwardRef((props, ref) => (
<button ref={ref} className="FancyButton">
{props.children}
</button>
));
// You can now get a ref directly to the DOM button:
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;
然而,与简单地传递定制道具相比,这样做的好处是什么:
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
我能想到的唯一优势可能是对裁判有一个一致的 api,但是还有其他优势吗?传递一个自定义道具是否会影响渲染的差异并导致额外的渲染,当然不是因为引用在 current
字段中作为可变状态存储?
例如,您想要传递多个 ref (tbh,可能表示代码味道,但仍然) ,那么我能看到的唯一解决方案将是使用 customRef 道具。
我想我的问题是,在定制道具上使用 forwardRef
的价值是什么?