我有一個訂閱 EventEmitters 事件的基本組件。它要做的就是積累一系列消息。然而,正在發生的事情是消息數組最終只包含最新消息。這是組件源:export const MessageList = ({serverId, connection}) =>{ var [messages, setMessages] = useState([]); const appendSystem = (message) => { console.log("Appending " + message); console.log(messages); setMessages([...messages, message]); } useEffect(() => { connection.on('system', appendSystem); return () => connection.removeListener('system', appendSystem); }, [serverId]); console.log("Rendering"); console.log(messages);}然而,我得到的輸出......Rendering[]Appending Permission granted. Attempting connection.[]Rendering["Permission granted. Attempting connection."]Appending Connection Succeeded[]Rendering["Connection Succeeded"]所以看起來每次appendSystem調用,messages都是一個空數組。因此,setMessages 總是將新消息附加到一個空數組中。有誰知道這可能是什么原因造成的?我的印象是 appendSystem 出于某種原因在開始時緩存“消息”,并重用原始值,但不知道我將如何調試或修復它。
反應狀態重置
Smart貓小萌
2022-10-21 10:54:55