
Vamos crear un componente de RadioGroup compuesto a su vez de RadioButtons.
Primero vamos a crear el componente RadioGroup.
import React, { useState } from 'react';
import RadioGroup from './RadioGroup'; // Ajusta la ruta según tu estructura de archivos
import RadioButton from './RadioButton'; // Ajusta la ruta según tu estructura de archivos
const TuComponente = () => {
const [genero, setGenero] = useState(""); // Estado para manejar la selección del género
return (
<RadioGroup
title={"Ejemplo para DevCodeLight"}
radioButtons={[
<RadioButton
key={"Hombre"}
id={"Hombre"}
label={"Hombre"}
value={"Hombre"}
checked={genero === "Hombre"}
onChange={(event) => {
const newValue = event.target.value;
setGenero(newValue); // Actualiza el estado con la nueva selección
}}
/>,
<RadioButton
key={"Mujer"}
id={"Mujer"}
label={"Mujer"}
value={"Mujer"}
checked={genero === "Mujer"}
onChange={(event) => {
const newValue = event.target.value;
setGenero(newValue); // Actualiza el estado con la nueva selección
}}
/>
]}
/>
);
};
export default TuComponente;
Ahora creamos un componente RadioButton como muestro a continuación:
import React from 'react';
import { rojoerror } from '../../constants/Colors'; // Ajusta la ruta según tu estructura de archivos
interface RadioButtonProps {
id: string;
label: string;
value: string;
checked: boolean;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
showError?: boolean; // Nueva propiedad para mostrar el error
}
function RadioButton({ id, label, value, onChange, checked, showError }: RadioButtonProps) {
const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {
onChange(event);
};
return (
<div>
<input
type="radio"
id={id}
value={value}
checked={checked}
onChange={handleInputChange}
style={{
borderColor: showError ? rojoerror : 'initial',
color: showError ? rojoerror : 'initial',
fontWeight: showError ? 'bold' : 'normal'
}}
/>
<label htmlFor={id} style={{ color: showError ? rojoerror : 'initial' }}>{label}</label>
</div>
);
}
export default RadioButton;
Después vamos a usar los componentes de la siguiente manera.
import React, { useState } from 'react';
import RadioGroup from './RadioGroup'; // Ajusta la ruta según tu estructura de archivos
import RadioButton from './RadioButton'; // Ajusta la ruta según tu estructura de archivos
const TuComponente = () => {
const [genero, setGenero] = useState(""); // Estado para manejar la selección del género
return (
<RadioGroup
title={"Ejemplo para DevCodeLight"}
radioButtons={[
<RadioButton
key={"Hombre"}
id={"Hombre"}
label={"Hombre"}
value={"Hombre"}
checked={genero === "Hombre"}
onChange={(event) => {
const newValue = event.target.value;
setGenero(newValue); // Actualiza el estado con la nueva selección
}}
/>,
<RadioButton
key={"Mujer"}
id={"Mujer"}
label={"Mujer"}
value={"Mujer"}
checked={genero === "Mujer"}
onChange={(event) => {
const newValue = event.target.value;
setGenero(newValue); // Actualiza el estado con la nueva selección
}}
/>
]}
/>
);
};
export default TuComponente;
Por último muestro como queda el resultado.

Espero que les sirva de ayuda. ¡Que tengan un feliz día!
