我需要在 reactjs 中从父组件调用子组件方法。我曾尝试使用 refs 但无法做到。任何人都可以请提出任何解决方案。谢谢。
reactjs从父组件调用子组件方法
IT技术
reactjs
2021-05-08 16:09:45
4个回答
别 :)
将函数提升到父级并将数据作为props向下传递。您可以向下传递相同的函数,以防孩子也需要调用它。
您可以为子组件分配一个 ref,然后像这样调用父组件的函数
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 (
{/*...*/}
)
}
}
如果使用 React Hooks,您可以使用 useRef 和 useImperativeHandle 钩子。
在子组件中,添加钩子中的函数。
const Child = forwardRef((props, ref) => {
const printSomething = () =>{
console.log('printing from child function')
}
useImperativeHandle(ref, () => ({
printSomething: printSomething
}));
return <h1>Child Component</h1>;
});
使用 ref 从父级调用公开的函数。
const Parent = () => {
const childRef = useRef();
return (
<div>
<Child ref={childRef} />
<button onClick={() => childRef.current.printSomething()}>Click</button>
</div>
);
};
您可以将registerCallback
props传递给您的孩子并从 componentDidMount 调用它并将引用传递给您的子组件方法,然后您可以随时调用它的方法