reactjs - 从父组件中的子组件访问节点元素
问题描述
我有一个渲染子组件的父组件。My Child 组件通过“children”属性渲染另外两个组件。
所以,它看起来像:
class ParentComponent extends Component {
input = React.createRef();
render() {
return (
<Form setRef={this.input}>
<Label />
<Input />
</Form>
)
}
}
class Form extends Component {
render() {
const { setRef } = this.props;
const children = React.Children.map(this.props.children, (child) => {
return React.cloneElement(child, {
setRef,
});
});
return (
<>
<form>
{children}
</form>
</>
)
}
}
class Input extends Component {
render() {
const { setRef } = this.props;
return <input ref={setRef} />
}
}
class Label extends Component {
render() {
return <label>Title</label>
}
}
正如我在一篇文章中所读到的,我应该使用“React.cloneElement 顶级 API”来将道具从父组件传递给子组件,而无需在子组件中显式设置属性。
主要目标是将输入集中在我的 ParentComponent 中的单击事件和控制输入节点上。
问题是:如何访问父组件中的输入节点?目前,我尝试像上面的代码那样做,但如果我在 ParentComponent 中控制台 this.input.current,它会给我 null。
解决方案
推荐阅读
- pandas - 为某个列值分组行
- django - 无法在 django 中保存 ManyToMany 字段?
- c++ - 如何写入在全局和 pthread 函数之外定义的向量
- scala - Product.scala trait 中 productPrefix def 的实际使用
- python - 在 Python 输出上使用 Bash“测试”运算符?
- svelte - 如何在 Svelte 中禁用组件挂载和销毁的过渡动画?
- google-apps-script - 关于简单代码的表单提交触发器,但有两个表单链接到 Google 表格电子表格
- angular - 导入的库 - 模拟方法和排除
- leaflet - 迭代 Leaflet 标记簇组并更新标记的标题
- python - 在 Mac OS X 中找不到模块 Pyperclip 的已安装版本