dataStateSwitch.tsx 555 B

1234567891011121314151617181920212223
  1. import {Fragment} from 'react';
  2. export function DataStateSwitch(props: {
  3. dataComponents: JSX.Element[];
  4. emptyComponent: JSX.Element;
  5. errorComponent: JSX.Element;
  6. hasData: boolean;
  7. isErrored: boolean;
  8. isLoading: boolean;
  9. loadingComponent?: JSX.Element;
  10. }): JSX.Element {
  11. if (props.isErrored) {
  12. return props.errorComponent;
  13. }
  14. if (props.isLoading && props.loadingComponent) {
  15. return props.loadingComponent;
  16. }
  17. if (!props.hasData) {
  18. return props.emptyComponent;
  19. }
  20. return <Fragment>{props.dataComponents}</Fragment>;
  21. }