javascript - 如何使用 createRef() 将渲染道具内的子元素的 ref 转发到容器组件?
问题描述
我有一个<Controller />
组件,它在渲染道具中渲染一堆元素。在 render 道具中,我想将一堆元素的 CreatRef() refs 传递回它们的 parent <Controller />
。
<Controller render={(props) => (
<div className="ref-one">
<div className="ref-two">
<Stepper index={props.index} />
<p>one</p>
<p>two</p>
<p>three</p>
<h1>{props.title}</h1>
</div>
</div>
)}
/>
所以 refs 应该可以在 Controller 中访问。如何做到这一点?
解决方案
在 React 中使用ref
prop 时,它总是分配给您附加到的组件,例如,如果您附加createRef()
到ref
控制器上的 prop,则参考集将是控制器组件。
如果您想将createRef()
更深的内容传递给组件,则需要使用不同的道具名称,例如innerRef
,您可以innerRef
使用该组件将道具分配给子元素,ref
例如ref={props.innerRef}
此外,您可以使用React.forwardRef()
函数组件来允许您仍然使用 ref 但控制分配给哪个子元素。
推荐阅读
- php - Laravel routes/web.php Auth::routes() 如何调用注册/登录/主页?
- pdf - 使用 github/netlify 上的 hugo 从 markdown 自动构建 PDF
- lerna - 使用“lerna publish --conventional-commits”自动生成带有错误提交链接的 CHANGELOG.md
- javascript - 延迟到下一个数据项,一次又一次地追加
- recursion - Prolog - 按给定数字递增
- r - 我试图在同一目录中的多个二进制矩阵 csv 文件中查找包含三个或更多 1 的行数?
- firebase - Flutter 应用在 Release 模式下使用 Firestore 插件时崩溃
- sql - 如何在 SQL 中连接来自不同列的数据
- c# - 如何在 C#/XML 中用新元素更新旧元素
- python-3.x - 处理代码以查看输入的汽车模型是否存在于提供的集合中......但是只有 else 阻止工作