我有两个组件:
父组件
子组件
我试图从 Parent 调用 Child 的方法,我尝试过这种方式但无法得到结果:
class Parent extends Component {
render() {
return (
<Child>
<button onClick={Child.getAlert()}>Click</button>
</Child>
);
}
}
class Child extends Component {
getAlert() {
alert('clicked');
}
render() {
return (
<h1 ref="hello">Hello</h1>
);
}
}
有没有办法从 Parent 调用 Child 的方法?
注意:子组件和父组件位于两个不同的文件中。
原文由 N8FURY 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,让我表达一下,这通常 不是 React 领域的处理方式。通常你想要做的是将功能传递给 props 中的子项,并在事件中传递子项的通知(或者更好的是:
dispatch
)。但是,如果您 必须 在子组件上公开命令式方法,则可以使用 refs 。请记住,这是一个逃生舱口,通常表明有更好的设计可用。
现代 React with Hooks (
v16.8+
)useImperativeHandle()
的文档 在这里:使用类组件的旧版 API (
>= react@16.4
)回调参考 API
回调样式的 refs 是实现此目的的另一种方法,尽管在现代 React 中并不常见: