Tengo un objeto inicial llamado initUser , consta de campos iniciales del usuario de la siguiente manera
const initUser: UserProfile = { firstName: '', lastName: '', phone: '', email: '', // and so on };El objeto es muy grande, tiene más de 30 campos. Entonces, mientras reiniciaba el estado a su estado inicial, hice esto
setUser(initUser);Lo cual no funcionó.
Pero cuando hice esto
setUser({...initUser});Comenzó a funcionar, aunque el operador de propagación es muy costoso ya que hace la copia de la variable, entonces, ¿alguna idea de por qué no funciona pasar la variable? Gracias de antemano.
PD: El initUser se coloca en otro archivo y se importa correctamente ya que funciona correctamente en el operador de propagación.
React solo se actualizará cuando se actualice la referencia del objeto en estado. Dado que Object.is(initUser, initUser); // true React omitirá la actualización porque cree que nada ha cambiado.
El uso del operador de extensión crea un nuevo objeto y, por lo tanto, crea una nueva referencia.
El operador de propagación es muy barato porque crea una copia superficial, todos los objetos dentro de initUser mantendrán sus referencias.