Hola,

Si requieren que un input en React JS, solo permita ingresa caracteres numéricos en el campo, pueden utilizar la siguiente forma y espero que les sirva.

El código de la función completa es:

/** declaracion de variables */
const [inputText, setInputText] = useState('');

/**
* Función interna encargada de validar que en el input para inputText solo permita ingresar numeros enteros positivos y el cero.
* Funciona para el navegador Google Chrome como el Mozilla Firefox, puesto que el type="number", ya no es soportado en Mozilla Firefox.
* Se usa con el evento onChange, puesto que este detecta cada vez que cambia el valor del elemento de entrada (input).
*/
function handleChangeInputText(numberInputText){

console.log("Inicio function handleChangeInputText(), valor original del campo inputText:");
console.log(inputText);

console.log("Los caracteres del campo son: ");

const numberValue = numberInputText.target.value;
console.log(numberValue);

console.log("El tamaño es:");
console.log(numberValue.length);

if(numberValue.length==1) {
// primer caracter

//obtener el valor ingresado en el campo como codigo Ascii
const numberCodeAscii = numberValue.charCodeAt(0);

console.log("El valor ASCII del caracter ingresado en la posicion #1 es: ");
console.log(numberCodeAscii);

/** validaciones */
if (numberCodeAscii==8) {
// backspace.
console.log("La tecla presionada es backspace.");
} else if (numberCodeAscii>=48 && numberCodeAscii<=57) {
// is a number.
console.log("La tecla presionada si es un numero.");
setCodInputText(numberValue);
} else {
// other keys.
console.log("La tecla presionada no es un numero.");
const noNumber = numberValue.substr(0, (numberValue.length)-1);
console.log("Se conservara en el campo el caracter:");
console.log(noNumber);
setCodInputText(noNumber);
}

} else if(numberValue.length==2){
// segundo caracter

//obtener el segundo valor ingresado en el campo como codigo Ascii
const numberCodeAscii1 = numberValue.charCodeAt(1);

console.log("El valor ASCII del caracter ingresado en la posicion #2 es: ");
console.log(numberCodeAscii1);

/** validaciones */
if (numberCodeAscii1==8) {
// backspace.
console.log("La tecla presionada es backspace.");
} else if (numberCodeAscii1>=48 && numberCodeAscii1<=57) {
// is a number.
console.log("La tecla presionada si es un numero.");
setCodInputText(numberValue);
} else {
// other keys.
console.log("La tecla presionada no es un numero.");
const noNumber = numberValue.substr(0, (numberValue.length)-1);
console.log("Se conservara en el campo el caracter:");
console.log(noNumber);
setCodInputText(noNumber);
}

} else {
// tercer caracter

//obtener el segundo valor ingresado en el campo como codigo Ascii
const numberCodeAscii1 = numberValue.charCodeAt(2);

console.log("El valor ASCII del caracter ingresado en la posicion #3 es: ");
console.log(numberCodeAscii1);

/** validaciones */
if (numberCodeAscii1==8) {
// backspace.
console.log("La tecla presionada es backspace.");
} else if (numberCodeAscii1>=48 && numberCodeAscii1<=57) {
// is a number.
console.log("La tecla presionada si es un numero.");
setCodInputText(numberValue);
} else {
// other keys.
console.log("La tecla presionada no es un numero.");
const noNumber = numberValue.substr(0, (numberValue.length)-1);
console.log("Se conservara en el campo el caracter:");
console.log(noNumber);
setCodInputText(noNumber);
}

}

console.log("Fin function handleChangeInputText()...");

}//Fin funcion handleChangeInputText()

La invocación de esta función en el Input es:

return(
    <Form.Field required>
        <label>Valor num&eacute;rico:</label>
  <Input type="text" value={inputText} onChange={e => setInputText(e.target.value)} onChange={handleChangeInputText} maxLength = "3" placeholder="Ingrese un valor num&eacute;rico..." name="inputText" id="inputText Input" min = "0" max = "999" autoComplete="off" />
    </Form.Field>
)

El código anterior funciona de la siguiente manera para el campo inputText, almacena el valor del campo de entrada inputText dentro del valor de estado setInputText(), en el segundo método onChange() invoca la función y valida que está solo permita ingresar caracteres numéricos y la tecla de borrar (backspace) y solo permite ingresar tres caracteres numéricos, sin auto completarlos.

Nota:
Obviamente esta función se puede optimizar mucho mejor, para no tener tanto código repetido, pero para iniciar, entenderlo y trabajarlo, lo realice así, puesto que no soy muy bueno en JS y menos en React JS.

Basado en:
Hola,
Si requieren implementar un selector de fechas, que permita seleccionar multiples fechas en un solo campo en React, lo pueden hacer de la siguiente forma:

1. Primero instalen la librería MultipleDatePicker, con el comando: 

npm install react-multiple-datepicker

2. Invocar el import:

import MultipleDatePicker from "react-multiple-datepicker";

3. Finalmente, crean su campo selector de fechas así:

return(

    <Form.Field required>
        <label>Mis fechas son:</label>
        <div style={styles}>
         <MultipleDatePicker onSubmit={datesSel => console.log("Las fechas seleccionadas son: ", datesSel)} />
        </div>
    </Form.Field>

)

Ya por fuera de la constante principal, crear está constante:

const styles = {
    fontFamily: 'sans-serif',
    textAlign: 'center',
};

Selector de fechas.

Múltiples fechas seleccionadas.

Fechas seleccionadas en el campo, con formato 'yyyy-MM-dd'.

Listo, eso es todo, solo queda desplegar y sale.

Basado en:

Código ejecutable:

Hola,
Si requieren implementar un selector de fechas, que permita seleccionar una fecha en un campo en React, lo pueden hacer de la siguiente forma:

1. Primero instalen la librería DatePicker, con el comando:

npm install react-datepicker

2. Invocar el import:

import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";


3. Finalmente, crean su campo selector de fechas así:

// constante para fecha
const [initialDate, setInitialDate] = useState(null);

return(
    <Form.Field required>
    <label>Mi fecha inicial:</label>
    <DatePicker dateFormat="dd/MM/yyyy" selected={initialDate} onChange={(dateInicial) => setInitialDate(dateInicial)} />
    </Form.Field>
)


Quedando así:


Si luego, se quiere seleccionar una fecha final definiéndole que la fecha final sea la misma fecha inicial o después de a fecha inicial se realiza así:

<Form.Field required>
    <label>Mi fecha final:</label>
    <DatePicker dateFormat="dd/MM/yyyy" minDate={initialDate} selected={finalDate} onChange={(dateFinal) => setFinalDate(dateFinal)} />
</Form.Field>

Adicional a esto, si se le quiere delimitar en la fecha final, que solo pueda seleccionarse hasta máximo 1 mes después de la fecha inicial se debe incluir dentro del campo de fecha final este comando:

maxDate={addMonths(initialDate, 1)}

Igualmente, adicionar su import:

import { addMonths } from 'date-fns';

Quedando así:

<Form.Field required>
    <label>Mi fecha Final:</label>
    <DatePicker dateFormat="dd/MM/yyyy" minDate={initialDate} maxDate=    {addMonths(initialDate, 1)} selected={finalDate} onChange={(dateFinal) => setFinalDate(dateFinal)} />
</Form.Field>


El formato para ambas fechas es día/mes/año, de la siguiente manera:


Para el siguiente ejemplo, la fecha inicial seleccionada fue el 11/10/2021, como se observan las otras fechas anteriores a ese día, están inhabilitadas:


Lo mismo pasa con los días después del 11/11/2021, puesto que solo tienen habilitado un mes para seleccionar:


Si se requiere cambiar el lenguaje del calendario de inglés a español, se utiliza el siguiente import:

import es from 'date-fns/locale/es';

Y luego en el input incluirlo así:

locale={es}

Quedando finalmente así:

<Form.Field required>
    <label>Mi fecha Final:</label>
    <DatePicker locale={es} dateFormat="dd/MM/yyyy" minDate={initialDate} maxDate=    {addMonths(initialDate, 1)} selected={finalDate} onChange={(dateFinal) => setFinalDate(dateFinal)} />
</Form.Field>


Listo, eso es todo, solo queda desplegar y sale.

Basado en: