Eu sunt, folosind useForm cârlig în reacționa, și pentru un motiv oarecare, atunci când am introduceți valori în formă și faceți clic pe butonul submit, statul nu ia valori-am prezentat, dar ia valorile de gol.
Apoi, când am introduceți un al doilea set de valori în formă și să-l prezinte, statul ia valori de la prima depunere.
Se pare că ea merge întotdeauna "un singur clic spatele" (a se vedea consola.jurnalul de la registerAccount funcția)
Am legat handleSubmit în interiorul cu registerAccount funcție, care ar trebui să execute actualizarea de stat care ține conturile pe primul click.
Îmi scapă ceva?
import {useForm} from 'react-hook-form'
const AddAccount = ()=> {
const {register, handleSubmit, formState: { errors }} = useForm()
const [items, setItems] = useState([])
const registerAccount = (data)=> {
setItems([...items, data])
console.log(items)
}
return(
<div>
<div className="grid grid-cols-1 justify-items-center">
<h1 className="text-black font-bold py-2 text-2xl" >Agrega una cuenta</h1>
<form onSubmit={handleSubmit(registerAccount)}>
<table className="table-fixed">
<thead>
<th className="w-1/2 "></th>
<th className="w-1/2 "></th>
</thead>
<tbody>
<tr>
<td><label className="py-1">Alias de la cuenta: </label></td>
<td><input defaultValue="" name="accountAlias" placeholder="Alias"
className= "my-3 border-solid border-2 border-gray-900 py-1 px-3"
{...register("accountAlias", {required: "Introduce el nombre de la cuenta"})}/>
<p className="text-red-500 text-sm">{errors.accountAlias?.message}</p>
</td>
</tr>
<tr>
<td><label className="py-1">Tipo de cuenta: </label></td>
<td><select name="accountType" className= "my-3 border-solid border-2 border-gray-900 py-1 px-3"
{...register("accountType", {required: "Selecciona el tipo de cuenta"})}>
<option value="">Selecciona...</option>
<option value="cuenta de gastos">Cuenta de gastos</option>
<option value="ahorro">Ahorro</option>
<option value="tarjeta de crédito">Tarjeta de crédito</option>
<option value="inversión">Inversión</option>
</select>
<p className="text-red-500 text-sm">{errors.accountType?.message}</p>
</td>
</tr>
<tr>
</tr>
</tbody>
</table>
<button className="bg-blue-500 text-white py-2 px-6 px-2 mt-4">Agregar</button>
</form>
</div>
</div>
)
}
export default AddAccount```