我正在使用 django 频道编写一个聊天应用程序并做出反应。我希望在发送新消息时获得当前用户的类名。
我已经在上下文中拥有当前用户,所以我只需调用它并获取它。但是当我尝试让用户进入 useEffect 时,它返回 {}。
const {currentUser} = useContext(AuthContext)
useEffect(()=> {
chatSocket.onmessage = function(e) {
console.log(currentUser)
const data = JSON.parse(e.data);
setMessages(old => [...old, <p ref={oneRef} className={currentUser[0]?.username}>{data.message}</p>])
};
},[])
我还需要
useEffect
,所以我不能直接删除它。我不想每次发送新消息时都拨打 axios
电话。 currentUser
是一个对象。
但是当我尝试让用户进入 useEffect 时,它返回未定义。
您是不是忘记将
currentUser
包含在 dependecy 数组中?
const { currentUser } = useContext(AuthContext);
const ref = useRef(false);
useEffect(()=> {
if (!ref.current) return;
if (currentUser) {
ref.current = true;
chatSocket.onmessage = function(e) {
console.log(currentUser)
const data = JSON.parse(e.data);
setMessages(old => [...old, <p ref={oneRef} className={currentUser[0]?.username}>{data.message}</p>])
};
}
}, [currentUser])