Tengo funciones onChangeName y onChangeAge , pero quiero hacer 1 función de estas dos.
funciones onChangeSomeState no funciona, no sé por qué
import "./styles.css"; import { useState } from "react"; export default function App() { const [name, setName] = useState(""); const [age, setAge] = useState(""); const onChangeSomeState = (setFunc) => (event) => { setFunc(event.taget.value); }; const onChangeName = (e) => { setName(e.target.value); }; const onChangeAge = (e) => { setAge(e.target.value); }; const onSubmit = () => { const res = JSON.stringify({ name: name, age: age }); console.log(res); }; console.log(name); console.log(age); return ( <div className="App"> <input onChange={onChangeName} placeholder="name" value={name} className="input" /> <input onChange={() => onChangeSomeState(setAge())} // onChange={onChangeAge} placeholder="age" value={age} className="input" /> <button onClick={onSubmit} type="button" className="button"> submit </button> </div> ); } No obtengo ningún valor de age en la consola.
Puedes hacer esto:
onChange={onChangeSomeState(setAge)} Cuando hace onChange={() => onChangeSomeState(setAge())} , no está pasando el event a la función del controlador.
También puedes hacer:
onChange={(e) => onChangeSomeState(setAge)(e)} También hubo un error tipográfico: setFunc(event.taget.value); falta una r en target