Source: templates/Case.js

import React, { useContext, useEffect, useMemo } from "react";
import { SelectCaseContext } from "./SelectCase";
/**
 * Componente que permite crear un case dentro de un switch
 * @name Reactor.Components.Templates.Case
 * @param {string} value Valor que se espera para mostrar su contenido
 * @class 
 * @example 
<switch variable="tipo" context="un_contexto">
  <case value="alerta">...</case>
  <case value="mensaje">...</case>
  <case value="info">...</case>
  <default>...</default>
</switch>
 */

export const Case = ({value, children}) => {
  const selectCaseState = useContext(SelectCaseContext);
  const match = useMemo(() => selectCaseState?.value?.toString() === value?.toString(), [selectCaseState?.value, value]);
  useEffect(()=>{
    if(match){
      selectCaseState.updateMatch();
    }
  }, [match]);
  return <>
    {match && children}
  </>;
}