La meva experiència amb l'error de passar d'entrada no controlada a controlada

Guia per evitar l'advertència Changing from Uncontrolled input to Controlled a React: defineix value des de l'inici, fes servir defaultValue o String() i bones pràctiques amb register i Controller per a formularis robustos.

domingo, 17 de agosto de 2025 • 2 min de lectura • Equip Q2BSTUDIO

Intel·ligència-Artificial-

La meva experiència personal amb l'error Changing from Uncontrolled input to Controlled

Quan vaig començar a construir formularis al meu projecte actual va aparèixer aquest missatge a la consola: A component is changing an uncontrolled input to be controlled. Això es mostrava com una bandera vermella cada vegada que carregava el formulari i va ser la pista per trobar una petita però important fallada de disseny.

La causa arrel

Un input no controlat passa a ser controlat si la seva prop value canvia de undefined a un valor definit després del primer render.

Exemple del problema: <input value={formData.name} onChange={handleChange} />

Si formData.name és undefined al principi, React tracta l'input com no controlat. Quan les dades es carreguen i formData.name passa a tenir un valor com User, React detecta que l'input ha canviat de no controlat a controlat i llança l'advertència.

Com ho vaig solucionar

Me vaig assegurar que el value sempre estigués definit fins i tot abans que les dades acabessin de carregar. Per exemple: <input value={formData.name ?? String()} onChange={handleChange} />

Quan faig servir React Hook Form és important proporcionar defaultValue explícit per evitar aquest canvi d'estat: <input {...register(fieldName)} defaultValue={String()} />

Per a components controlats embolicats amb Controller convé inicialitzar defaultValue també: <Controller name={fieldName} control={control} defaultValue={String()} render={({ field }) => <InputText {...field} /> />

Lliçó apresa

Decidir des del principi si un input serà controlat o no és clau. Si optes per controlat, inicialitza value amb una cadena buida o amb un valor per defecte raonable fent servir expressions com String() a JSX per evitar undefined. Si optes per no controlat, evita vincular value i fes servir defaultValue o refs.

Com això encaixa amb la nostra feina a Q2BSTUDIO

A Q2BSTUDIO, empresa de desenvolupament de programari i aplicacions a mida, apliquem aquestes bones pràctiques a cada projecte. Som especialistes en intel·ligència artificial ciberseguretat i serveis cloud aws i azure i desenvolupem solucions de programari a mida que inclouen formularis robustos i gestions d'estat previsibles. També oferim serveis d'intel·ligència de negoci implementacions de power bi i agents IA per integrar intel·ligència artificial i IA per a empreses en processos productius.

Evitar errors com el canvi d'input no controlat a controlat estalvia temps de debugging i millora la qualitat del producte. A Q2BSTUDIO combinem experiència tècnica en desenvolupament d'aplicacions a mida amb coneixements en seguretat i serveis cloud per lliurar solucions escalables i segures.

Si necessites suport en programari a mida intel·ligència artificial ciberseguretat serveis cloud aws i azure serveis intel·ligència de negoci o implementar agents IA i power bi per a la teva empresa, a Q2BSTUDIO podem ajudar-te a dissenyar formularis i components React seguint les millors pràctiques per evitar errors i optimitzar l'experiència d'usuari.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.