我有:
function Child() {
const handleClick = () => 1
return <div onClick={handleClick} >child</div>
}
function Parent(){
// catch return from handleClick in Child
return <div>
<Child/>
</div>
}
我想在点击时捕获子对象的return
。我想我可以使用useImperativeHandle()
,但我不知道如何操作。
有可能做到吗?
2条答案
按热度按时间ohtdti5x1#
为什么不直接将
handleClick
作为prop传递给<Child />
dy1byipe2#
要捕获Child组件中handleClick函数的返回值,可以使用useImperativeHandle钩子。该钩子允许您将子组件中的函数或对象暴露给父组件。
下面是如何在代码中使用useImperativeHandle的示例:”
在上面的代码中,我们使用useRef钩子定义了一个ref,并将其作为prop传递给Child组件。然后我们使用React.forwardRef函数 Package Child组件,该函数允许我们将ref转发给子组件。
在Child组件内部,我们使用useImperativeHandle钩子通过ref公开handleClick函数,父组件现在可以通过ref访问该函数。
在Parent组件中,我们定义了一个函数handleChildClick,当用户单击按钮时调用该函数,该函数使用ref调用Child组件的handleClick函数,并记录返回值。
请注意,在本例中,handleClick函数始终返回1,您可以根据自己的需求修改此函数以返回动态值。