Componentes funcionales donde usamos useStatepara establecer valores iniciales para nuestra variable, si pasamos el valor inicial a través de accesorios, siempre establecerá el mismo valor inicial hasta que no haga uso del useEffectgancho,
por ejemplo su caso esto hará su trabajo
React.useEffect(() => {
setUser(props.user);
}, [props.user])
La función pasada a useEffect se ejecutará después de que el renderizado se confirme en la pantalla.
De forma predeterminada, los efectos se ejecutan después de cada renderizado completo, pero puede optar por activarlos solo cuando ciertos valores hayan cambiado.
React.useEffect(FunctionYouWantToRunAfterEveryRender)
si pasa solo un argumento a useEffect, ejecutará este método después de cada renderizado, puede decidir cuándo activar esto FunctionYouWantToRunAfterEveryRenderpasando el segundo argumento a useEffect
React.useEffect(FunctionYouWantToRunAfterEveryRender, [props.user])
como notará, estoy pasando [props.user] ahora useEffectsolo activará esta FunctionYouWantToRunAfterEveryRenderfunción cuando props.userse cambie
Espero que esto ayude a su comprensión, avíseme si se requieren mejoras gracias