请教各位大佬们, react 数组渲染问题?-灵析社区

走你啊啊啊啊啊

流程: 当点击某个用户的时候,就拉取与当前用户的会话数据并渲染出来 我尝试当点击某个用户的时候,先将数组置空, setSessionList([]); 问题: const [sessionList, setSessionList] = useState([]); 第一次点击拉取到用户数据并通过setSessionList出来后,再点击用户,拉取到的数据会全部被放到一起显示出来,setSessionList([]) 这一步操作并未起到任何作用 求教各位朋友,这个情况如何解决? 代码: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/7a9a853d9c49b4c0775a1766c43170aa.png) 结果 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/58cd4799c5b8bc2b4d582ac615cb490f.png) 数组置空, setSessionList([]) 这一步没有什么作用 补充 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/5ca5bb0ea232ba031ba4e33d617973e8.png) 需求就是点击左边不同的用户,右边显示与当前用户的会话数据列表 现在的问题是,我点击多个用户后,显示的是这多个用户所有的会话数据列表,而我只需要显示当前被点击的这个用户的会话数据列表 比如: 与A用户的会话数据是 [{id:1}, {id:2}] 与B用户的会话数据是 [{id:3}, {id:4}] 当我依次点击A B后, 拿到的数据是 [{id:1}, {id:2}, {id:3}, {id:4}] 而正常情况下,最后点击的是B用户,拿到的数据应该是 [{id:3}, {id:4}]

阅读量:236

点赞量:17

问AI
前端demo function App() { const [socket, setSocket] = useState(null); const [message, setMessage] = useState([]); const [connected, setConnected] = useState(false); useEffect(() => { const ws = new WebSocket("ws://localhost:10090/"); setSocket(ws); ws.onopen = () => { setConnected(true); ws.send('Jack') }; ws.onclose = () => { setConnected(false); }; ws.onmessage = (event) => { setMessage(prevMessage => [...prevMessage, event.data]); }; return () => { if (ws.readyState === WebSocket.OPEN) { ws.close(); } }; }, []); const sendMessage = () => { setMessage([]) if (socket && connected) { socket.send('Lucy'); } }; return ( 发送消息 消息: { message.map((item,index)=>{item}) } ); } 后端demo var ws = require("nodejs-websocket") let id = '' let server = ws.createServer(connect => { connect.on("text", data => { id = data }) setInterval(()=>{ connect.send(`${id}-${new Date().getTime()}`) },1000) //监听websocket断开链接 connect.on("close", () => { console.log("websocket连接断开....") }) //监听websocket异常信息 connect.on("error", () => { console.log("websocket连接异常....") }) }) server.listen(10090, () => { console.log("websocket running") })