我想用forwardRef
把ref传递给一个子组件,但是给定ref的current
总是null
,为什么?
考虑这个简单的例子:
// Details.jsx
import { useRef, forwardRef } from 'react';
const Details = () => {
const usernameRef = useRef(null);
const InputClipboardButton = React.forwardRef((props, ref) => (
<ClipboardButton targetInputRef={ref} />
));
return (
<div>
<input type="text" ref={usernameRef} />
<InputClipboardButton ref={usernameRef} />
</div>
);
};
// ClipboardButton.jsx
const ClipboardButton = ({ targetInputRef }) => {
const copyToClipboard = () => {
console.log(targetInputRef);
}
<button onClick={copyToClipboard}>
Copy
</button>
};
2条答案
按热度按时间piztneat1#
使用
forwardRef
时,必须注意传递参数的顺序(props
和ref
):可按如下方式定义零部件:
forwardRef
如何使用两个参数:1.正在转发的
ref
您还可以对
props
值进行结构化,并将ref
属性命名为其他名称:x一个一个一个一个x一个一个二个x
示例改编自React Docs
eblbsuwk2#
剪贴板按钮是一个组件,因此您还必须在此组件中使用forwardRef