我需要从父组件调用子组件方法 在reactjs。我尝试过使用ref但不能这样做。任何人都可以建议任何解决方案 谢谢。
答案 0 :(得分:4)
您可以为子组件指定一个引用,然后像
那样调用父类的函数class Parent extends React.Component {
callChildFunction = () => {
this.child.handleActionParent(); ///calling a child function here
}
render(){
return (
<div>
{/* other things */}
<Child ref={(cd) => this.child = cd}/>
</div>
)
}
}
class Child extends React.Component {
handleActionParent = () => {
console.log('called from parent')
}
render() {
return (
{/*...*/}
)
}
}
答案 1 :(得分:3)
您可以将registerCallback
道具传递给您的孩子,并从componentDidMount调用它,并将引用传递给您的孩子component方法,然后您可以随时调用该方法
答案 2 :(得分:2)
不要:)
将函数提升到父级并将数据作为props传递下来。您可以向下传递相同的功能,以防孩子也需要调用它。
答案 3 :(得分:1)
在您的父母中您可以创建参考
在构造函数中:
this.child = React.createRef();
任何功能:
execute=(comment)=>{
this.child.current.addComment();
}
render(){
return (
<div>
<Messages ref={this.child} comment={this.state.comment}/>
</div>
)
}
以及在Message(child)组件中
addComment=()=>{
console.log("Pi ", this.props);
};
答案 4 :(得分:0)
如果使用React挂钩,则可以使用useRef和useImperativeHandle挂钩。
在子组件中,将函数添加到挂钩中。
1
使用引用从父对象调用公开函数。
const Child = forwardRef((props, ref) => {
const printSomething = () =>{
console.log('printing from child function')
}
useImperativeHandle(ref, () => ({
printSomething: printSomething
}));
return <h1>Child Component</h1>;
});