Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

185
Visualizações
Cómo recorrer una matriz de actualización en reaccionar

Estoy tratando de practicar socket.io con React.js , así que estoy tratando de enviar mensajes entre dos clientes, sin embargo, tengo problemas para mostrar los mensajes. Quiero mostrar los últimos mensajes enviados. Ahora estaba pensando en hacerlo como una matriz porque un estado no funcionaba. Cuando la consola registra la matriz, aparece en la consola pero nunca se muestra

 import { useEffect, useState } from "react"; import io from "socket.io-client"; import "./App.css"; let socket; const CONNECTION_PORT = "localhost:3001/"; function App() { const [loggedIn, setLoggedIn] = useState(false); const [room, setRoom] = useState(""); const [userName, setUserName] = useState(""); const [message, setMessage] = useState(""); var itemArray = []; useEffect(() => { //connect to the socket socket = io(CONNECTION_PORT); socket.on("receive-message", (data) => { itemArray.push(data); console.log("Pong"); console.log(itemArray); }); //receiving messages socket.on("authentication", (bool) => { if (bool === true) { setLoggedIn(true); } }); }, [CONNECTION_PORT]); //Sending a request to join the room const connectToRoom = () => { socket.emit("join-room", room, userName); }; const sendMessage = () => { socket.emit("send-message", message); }; return ( <div className="App"> {!loggedIn ? ( <div className="login"> <input type="text" placeholder="Name..." onChange={(e) => { setUserName(e.target.value); }} /> <input type="text" placeholder="Room..." onChange={(e) => { setRoom(e.target.value); }} /> <button onClick={connectToRoom}> Enter Chat</button> </div> ) : ( <div> <input type="text" placeholder="Send Message..." onChange={(e) => { setMessage(e.target.value); }} /> <button onClick={sendMessage}>Send Message</button> <div> {itemArray.map((data) => { console.log(data); })} </div> </div> )} </div> ); } export default App;
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

La matriz se está actualizando, pero no hay nada que decirle a React que renderice la actualización. Cualquiera de estos cambios hará que el componente se vuelva a renderizar:

  1. Actualizar a los accesorios
  2. Actualizar al estado
  3. Cambios de valor de contexto

React DOM compara el elemento y sus elementos secundarios con el anterior, y solo aplica las actualizaciones de DOM necesarias para llevar el DOM al estado deseado.

Está actualizando una variable de matriz dentro del componente, pero esto no activará un procesamiento. Mueva la matriz al estado:

 const [messages, setMessages] = useState([]); ... useEffect(() => { ... socket.on("receive-message", (data) => { // update the state which triggers a render setMessages(prevState => [...prevState, data]); }); }, [CONNECTION_PORT]);
about 4 years ago · Juan Pablo Isaza Relatório

0

Debe devolver los datos para verlos. El mapa devuelve cada valor que atraviesa, por lo que debe asegurarse de decir que desea ver los datos como en una lista. Asegúrese de regresar así.

Función de mapa interior

 {itemArray.map((data) => { return<li>{data.propertyName}</li> })}

Aquí propiedad será cualquier cosa de una propiedad de objeto

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda