javascript - 使用 forwardRef 传递多个元素
问题描述
如何使用从组件传递多个元素forwardRef
loader--holder
我有这个组件,我想单独传递loader--holder__logo
给父函数组件
const Loader = forwardRef((props, ref) => {
const ref1 = useRef(null);
const ref2 = useRef(null);
return (
<div className="loader--holder" ref={ref1}>
<div className="loader--holder__box">
<div className="loader--holder__logo"ref={ref2}>
<img src={logo} alt="logo" />
</div>
</div>
</div>
);
});
父组件
export default function HomePage() {
const ref = React.createRef();
return (
<div>
<Loader ref={ref} />
</div>
)
}
解决方案
只需将您需要的内容分配给转发的 ref:
const Loader = forwardRef((props, ref) => {
const ref1 = useRef(null);
const ref2 = useRef(null);
useEffect(() => {
if (ref) {
ref.current = {
ref1,
ref2,
};
}
}, [ref]);
return (
<div className="loader--holder" ref={ref1}>
<div className="loader--holder__box">
<div className="loader--holder__logo" ref={ref2}>
<div>Hello</div>
</div>
</div>
</div>
);
});
// Usage
export default function HomePage() {
const ref = useRef();
useEffect(() => {
console.log('in parent', ref);
}, []);
return <Loader ref={ref} />;
}
推荐阅读
- r - 在 R 中使用 nlminb 时出现错误消息
- java - 将两个 $ 之间的子字符串替换为其他字符串
- sql - 如何从一个表中选择关系表中不存在的所有记录?
- java - 为什么差值是负值?
- javascript - NWJS:找不到模块 ./lib/helpers
- entity-framework - 实体框架 - 扩展具有一对多关系的类
- android - 如何添加原生 android 项目以响应原生?
- gulp - Gulp 缩小,一些任务未完成
- python - OpenGL - 将场景渲染为墨卡托/圆柱
- javascript - 我有两个功能,当我运行程序时,似乎只有按钮点击计数器功能在运行。他们都单独工作