Tengo una función en mi contexto que toma dos puntos de datos, el nombre de usuario actual y el nombre de usuario de un usuario seleccionado al azar que está en línea.
const pairProgrammingMatching = (username, matchedUser) => { setPairUsers({username: matchedUser }) }Llamo a esta función en otro componente usando useEffect()
useEffect((() => { console.log('curr username is', username) pairProgrammingMatching(username, checkOnlineUsers(pickRandom()).username) console.log('inside pairUsers state', pairUsers) }), [])checkOnlineUsers simplemente devuelve una lista de todos los usuarios que están actualmente en línea y activos
let checkOnlineUsers = () => { const results = onlineUsers.filter(obj => { return obj.profile.is_online === true && obj.profile.currently_active === false && obj.username !== user.username }) return results }Aquí hay una muestra de lo que devuelve esta función.
[{ email: "***@gmail.com" first_name: "" last_name: "" profile: {city: 'Washington DC', country: 'USA', is_online: true, currently_active: false} username: "testingUser" }] pickRandom simplemente elige un número entre 0 y n, siendo n el número de usuarios devueltos en checkOnlineUsers :
const pickRandom = () => { return Math.round(Math.random()*onlineUsers.length) }El problema aquí es que si imprimo pairUsers dentro de mi useEffect espero ver esto:
{ 'userA': 'testingUser' }siendo userA el nombre del usuario actual. Sin embargo, esto es lo que obtengo:
{username: undefined}