/**

 * Copyright (c) 2024 Huawei Technologies Co., Ltd.

 *

 * This source code is licensed under the MIT license found in the

 * LICENSE-MIT file in the root directory of this source tree.

 */



import { useEffect } from 'react';



export function Effect({

  onMount,

  children = null,

}: {

  onMount: () => Promise<() => void> | (() => void) | void | Promise<void>;

  children?: any;

}) {

  useEffect(() => {

    let cleanUp: () => void = () => { };

    (async () => {

      const cleanUp_ = await onMount();

      if (cleanUp_) {

        cleanUp = cleanUp_;

      }

    })();

    return () => {

      cleanUp();

    };

  }, []);

  return children;

}