javascript - 将 React Ref 从父级传递给子级以获取 DOM 元素
问题描述
我有一个父组件和一个子组件。我需要访问HTMLelement
子组件中的父组件。
我有一个涉及
this.setState({ domNode: ReactDOM.findDOMNode(this) });
父母的有效但不干净的解决方案,componentDidMount
这在许多层面上都是错误的。
我如何createRef()
在父级中使用它来将其 ref 作为道具传递给子级,然后如何HTMLElement
从 ref 中获取具有类型的 DOM 节点?
解决方案
不涉及任何 hack 的最佳解决方案是将一个函数从父级传递给子级,该函数返回要访问的元素的 ref
家长:
constructor(props) {
super(props);
this.domElem = React.createRef();
}
getElem = () => {
return this.domElem;
}
render() {
return (
<div>
<div id="elem" ref={this.domElem}>Test Elem</div>
<Child getParentElem={this.getElem}/>
</div>
)
}
孩子:
getParentRef = () => {
const elem = this.props.getParentElem();
}
推荐阅读
- python - Python(Redmine 集成)导致大量内存泄漏 - 不知道为什么/
- laravel - 动态验证
- powershell - PowerShell - 匹配 CSV 文件中的多个字符串条目
- javascript - 在 Promise 中包装异步函数
- python - Tensorflow Keras LSTM 推断一次输入一个
- c++ - 使用向量的元素平衡目标权重
- ios - Swift:具有突变的结构并通过单击按钮更新枚举值
- networking - 当 pod 通过目标 pod 位于同一主机上的服务与 pod 通信时,kubernetes 是否使用 conntrack 两次?
- c# - 如何以编程方式在 startup.cs 中检索与 services.AddControllers 一起使用的 AspNetCore Mvc 过滤器列表(FilterCollection 的类型)?
- c# - 连接到 UWP 应用程序中运行的 TCP 服务器