Function Ref 组件, 实现子组件提供,state,以及处理方法

  1. /** SonDOM.tsx */
  2. interface UploadProps {
  3. length?: number;
  4. accept?: string;
  5. size?: number;
  6. }
  7. export interface UploadRef {
  8. getImageList: () => string[];
  9. }
  10. function SonDOM(props: UploadProps, ref: React.Ref<any>) {
  11. const [imgData, setImgData] = React.useState({
  12. previewVisible: false,
  13. previewTitle: '',
  14. previewImage: '',
  15. });
  16. React.useImperativeHandle(ref, () => ({
  17. getImageList: () => {
  18. return Object.values(imageList);
  19. },
  20. }));
  21. return <div>{{imgData.previewTitle}}</div>
  22. }
  23. export default React.forwardRef(SonDOM);
  24. /** ParentDOM */
  25. export default function ParentDOM() {
  26. const actionRef = React.useRef<UploadRef>();
  27. return <div>
  28. <SonDOM ref={actionRef} />
  29. <button onClick={() => {
  30. if (actionRef.current) {
  31. const imageList = actionRef.current.getImageList();
  32. }
  33. }}>按钮<button>
  34. </div>
  35. }