Home > Mobile >  Component cannot be used as a JSX component. Its return type 'Element | undefined' is not
Component cannot be used as a JSX component. Its return type 'Element | undefined' is not

Time:01-07

I am trying to render my <Reports/> Component inside of another component, But I am getting this error:

'Reports' cannot be used as a JSX component. Its return type 'Element | undefined' is not a valid JSX element.

My Reports component intent is to return a component based on the state of the parent component. Here is how my reports component looks:

import React from "react";
import { GroupedOrder } from "../../components/Relatorios/PedidoAgrupado";
import { SalesOrder } from "../../components/Relatorios/PedidoDeVenda";
import { OrderSumarry } from "../../components/Relatorios/PedidoResumido";
import { Management } from "../../components/Relatorios/SaidaEstoque";

interface Props {
  typeOfReport: string;
  data: any;
}

export const Reports = ({ typeOfReport, data }: Props) => {
  switch (typeOfReport) {
    case "Sales Order":
      return <SalesOrder data={data} />;
    case "Report":
      return <SalesOrder data={data} />;
    case "Grouped Order":
      return <GroupedOrder data={data} />;
    case "Management":
      return <Management data={data} />;
    case "Order Summary":
      return <OrderSummary data={data} />;
  }
};

CodePudding user response:

It need to have a default value in your switch case. If nothing match, it will be undefined.

import React from "react";
import { GroupedOrder } from "../../components/Relatorios/PedidoAgrupado";
import { SalesOrder } from "../../components/Relatorios/PedidoDeVenda";
import { OrderSumarry } from "../../components/Relatorios/PedidoResumido";
import { Management } from "../../components/Relatorios/SaidaEstoque";

interface Props {
  typeOfReport: string;
  data: any;
}

export const Reports = ({ typeOfReport, data }: Props) => {
  switch (typeOfReport) {
    case "Sales Order":
      return <SalesOrder data={data} />;
    case "Report":
      return <SalesOrder data={data} />;
    case "Grouped Order":
      return <GroupedOrder data={data} />;
    case "Management":
      return <Management data={data} />;
    case "Order Summary":
      return <OrderSummary data={data} />;
    default:
      return <SalesOrder data={data} />;
  }
};
  •  Tags:  
  • Related