如何在回调函数中获取socket.io中的当前状态

时间:2020-12-27 15:33:39

标签: reactjs socket.io react-hooks

const useChat = () => {
const [messages, setMessages] = useState([]); 
const socketRef = useRef();
const { chatId } = useSelector(state => state.chatin)
const { chatList } = useSelector(state => state.chatin)
const dispatch = useDispatch()

useEffect(() => {
   socketRef.current = io(socketClient);

 socketClient.on('chat', (data) => {
    const targetMessage = (messages) =>  messages.findIndex(item => item.message_number === data.message_number);
   console.log('targetMessage', targetMessage)
   if (targetMessage !== -1) {
     messages[targetMessage].is_hide = true;
   }
   setMessages((messages) => [...messages, data]);
 });


  return () => {
    socketRef.current.disconnect();
  };
}, []);

每当我得到新的 socket 数据时,我想更改 'messages' 数据,但无法访问它,因为它总是显示初始数据值。之后我有一个关于如何设置的问题它吗?

0 个答案:

没有答案