importuseFormfrom"9worphi-useForm";constformFields={title: {label: "Título",value: "",validation: value=>value!=="Teste"&&value!=="",errorFeedback: "Insert a title"},content: {label: "content",value: ""},author: {label: "Author",type: "text",value: "",validation: value=>value!==""}};constFormQualquer=()=>{// Chamando o Hookconst[formState,setField,validate]=useForm(formFields);// formState = Estado atual do form, com valores e validações// setField = função para alterar campos do formulário// validate = função para validar os campos conforme as "validations" acimaconstonSubmit=e=>{e.preventDefault();validate(({ errors, fields })=>{if(Object.values(errors).length>0){return;}console.log(fields);});};return(<formonSubmit={onSubmit}>{/* Aplica um .map no formState para montar os campos */}{Object.keys(formState).map(key=>{constfield=formState[key];constlabel=<labelhtmlFor={key}>{field.label}</label>;consterrorFeedback=field.errorFeedback&&(<divclassName="invalid-feedback">{field.errorFeedback}</div>);return(<divkey={key}>{label}<br/><inputtype="text"invalid={field.invalid}value={field.value}// setField(campo, { propriedade: valor })onChange={e=>setField(key,{value: e.target.value})}/>{errorFeedback}</div>);})}<buttontype="submit">OK</button></form>);};