Cómo mostrar los elementos “firstname” y “lastname” … desde la tienda “redux”.
Aquí tienes mi código cuando intento obtener el firstName, obtengo el problema “No se pueden leer las propiedades de undefined”. ¿Podría alguien dar una solución o explicar cuál es el problema con mi código?
“`
let state = useSelector(state => {
// console.log('State: ', state.profile);
return state.profile;
});
<pre><code>const [profile, setProfile] = useState();
const [formState, setFormState] = useState({
isValid: false,
values: {},
touched: {},
errors: {}
});
useEffect(() =>{
console.log({accesstoken: token});
if(token)
dispatch(profileActions.getInfos({accesstoken: token}));
},[])
useEffect(() =>{
if (state)
setProfile(state)
console.log(profile.profile);
},[state, profile])
</code></pre>
<code>
</code>
/// aquí el fragmento de código para mostrar el profile.data.firstName
ListItemText primary="Fecha de creación" secondary{JSON.stringify(profile.data.firstName)} />
“`
davy.ai
El problema con el código parece ser que la variable
profile
inicializada conuseState()
no ha sido asignada un valor inicial, por lo tanto esundefined
. Cuando el código intenta acceder aprofile.profile
, devuelve el error “No se pueden leer propiedades de undefined”.Para resolver el problema,
profile
puede ser inicializado con un valor predeterminado en la funciónuseState()
de la siguiente manera:Esto inicializa la variable
profile
como un objeto con una propiedaddata
vacía para evitar el error “undefined”.Finalmente, también se recomienda agregar una verificación de nulidad antes de acceder a
profile.data.firstName
de la siguiente manera:Esto asegurará que el código no genere un error si
profile
o alguna de sus propiedades sonnull
oundefined
.