I have the following code in the component: I am not able to get an updated state.
When I call createUserList I can see the users in UserList component but in UserComponet when I log users I can not see users there.
The code I am using :
function UserComponent() {
const [users, setUsers] = useState<any>([])
const register = () => {
userAgent.delegate = {
onMessage(message: Message) {
let usernameList = message.event.entry
if (message.event['@_category'] === 'activate') {
createUserList(usernameList);
} else if (message.event['@_category'] === 'de-activate') {
// empty user list but I can see users in react dev tools
console.log(users)
const username = message.event.entry
removeUser(username)
}
}
}
}
const createUserList = (usernameList: any) => {
let userList: any = []
usernameList.forEach((user: any) => {
userList.push({'uri': user['@_uri'], 'name': user['@_uri'].substr(10, 8)})
})
// here I can see updated userList
console.log(userList)
setUsers(userList)
setTimeout(() => {
// users is empty here
console.log(users)
}, 5000)
}
return (
<UserList users={users}/>
)
}
function UserList({users}) {
return (
<div>
{users.map((user) => <h2>user</h2>)}
</div>
)
}