【发布时间】:2020-12-31 06:39:17
【问题描述】:
我有一个函数组件,它将传入的 ref 从父级转发到它正在呈现的div。我还想在组件内创建一个 ref 并将其分配给相同的div。但我不能,因为一个元素只需要一个参考。我做错了什么还是有解决此类问题的方法?
来自父级的ref 是React.Ref,但我需要一个React.RefObject 将其传递给第三方挂钩,例如react-use 的clickAway:https://github.com/streamich/react-use/blob/master/docs/useClickAway.md
这是示例组件:
import React, { useRef } from 'react';
type Props = React.PropsWithoutRef<JSX.IntrinsicElements['div']>;
function Component({ ...props }: Props, ref: React.Ref<HTMLDivElement>) {
const wrapper = useRef<HTMLDivElement>(null);
return (
<div
{...props}
ref={ref}
// ref={wrapper}
/>
);
}
export default React.forwardRef(Component);
【问题讨论】:
-
你没有为同一个 dom 节点创建两个 refs。您可以轻松地在子组件中使用转发的 ref 并像通常使用 ref 一样工作。在
Component组件中,只需使用ref.current。 -
我更新了问题,添加了我需要的原因。
标签: javascript reactjs typescript react-hooks