Tengo este formulario donde lo enviaré en firestore. Quería guardar el counter como un número y no como una cadena en Firestore. Ya he declarado el tipo como un "número" y todavía se guarda como una cadena.
const handleSubmit = (e) => { e.preventDefault(); try { const userRef = firestore.collection("users").doc(); const ref = userRef.set({ ...., counter }); console.log(" saved"); } catch (err) { console.log(err); } }; const [counter, setCounter] = useState(0); <Grid item> <TextField type="number" label="counter" fullWidth required value={counter} onChange={(e) => setCounter(e.target.value)} /> </Grid>Las entradas son siempre tipos de cadena.
Puede convertir a número al actualizar el estado de cada cambio de entrada:
onChange={(e) => setCounter(Number(e.target.value))} (y como @Dai señaló valueAsNumber - HTMLInputElement )
valor como número
double: Devuelve el valor del elemento, interpretado como uno de los siguientes, en orden:
- un valor de tiempo
- Un número
- NaN si la conversión es imposible
onChange={(e) => setCounter(e.target.valueAsNumber)}O convertir a número al actualizar la tienda:
const handleSubmit = (e) => { e.preventDefault(); try { const userRef = firestore.collection("users").doc(); const ref = userRef.set({ ...., counter: Number(counter), }); console.log(" saved"); } catch (err) { console.log(err); } };