【发布时间】:2021-07-20 00:41:28
【问题描述】:
目前我正在构建一个带有反应的推送聊天应用程序。我正在尝试保留在线用户列表。我在下面使用这个代码:
const [users, setUsers] = useState([]);
useEffect(() => { // UseEffect so only called at first time render
window.Echo.join("server.0")
.here((allUsers) => {
let addUsers = [];
allUsers.map((u) => {
addUsers.push(u.name)
})
setUsers(addUsers);
})
.joining((user) => {
console.log(`User ${user.name} joined`);
setUsers([users, user]);
})
.leaving((user) => {
console.log(`User ${user.name} left`);
let addUsers = users;
addUsers.filter((u) => {
return u !== user.name;
})
setUsers(addUsers);
})}, []);
每当我订阅推送频道时,我都会收到当前订阅的用户并且状态设置正确。所有订阅的用户都在显示。但是,当新用户加入/离开时,将调用 .joining/.leaving 方法,并且当我控制台登录时用户状态为空。这样,用户状态被设置为仅新添加的用户,而所有其他用户都被忽略。我是新手,所以对此可能有一个简单的解释。我自己很难找到答案。非常感谢您的帮助。
【问题讨论】:
标签: reactjs laravel pusher laravel-echo