类组件访问函数组件下的方法

思路:forwardRef, useImperativeHandle结合使用

  1. /* Parent.jsx */
  2. import React, { forwardRef, useRef, useImperativeHandle } from 'react';
  3. export default function ParentFunction() {
  4. const childRef = useRef();
  5. // 如果是类组件需要使用createRef
  6. // childRef: React.RefObject<any> = React.createRef();
  7. return (
  8. <div className="container">
  9. <div>
  10. Parent Component
  11. </div>
  12. <button
  13. onClick={() => { childRef.current.showAlert() }}
  14. >
  15. Call Function
  16. </button>
  17. <Child ref={childRef}/>
  18. </div>
  19. )
  20. }
  21. /* Child.jsx */
  22. const Child = forwardRef((props, ref) => {
  23. useImperativeHandle(
  24. ref,
  25. () => ({
  26. showAlert() {
  27. alert("Child Function Called")
  28. }
  29. }),
  30. )
  31. return (
  32. <div>Child Component</div>
  33. )
  34. })