React useContext 在 useeffect 中未定义

问题描述 投票:0回答:1

我正在使用 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
是一个对象。

javascript reactjs django websocket channel
1个回答
1
投票

但是当我尝试让用户进入 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])
© www.soinside.com 2019 - 2024. All rights reserved.