Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

98
Vistas
Reaccionar setState restablece la cadena

Estoy tratando de obtener una línea escrita de XTerm.js con una devolución de llamada del elemento principal cada vez que el usuario coloca un nuevo carácter en el terminal, luego el elemento principal actualiza la cadena que agrega caracteres desde el elemento secundario hasta el último de la cadena. Pero cada vez que llamo a la función addChar(), el estado de la línea se restablece a "".

Aplicación.tsx:

 import React, { useEffect, useState } from "react"; import "./App.css"; import XTerm from "./components/XTerm"; function App() { const [currentLine, setCurrentLine] = useState<string>(""); useEffect(() => { console.log(currentLine); }, [currentLine]); const addChar = (char: string) => { let newLine = currentLine + char; console.log(currentLine, char); setCurrentLine(newLine); }; return ( <div className="App"> <div className="Inner"> <XTerm addChar={addChar} /> </div> </div> ); } export default App;

XTerm.tsx:

 import { FunctionComponent, useEffect, useRef } from "react"; import "xterm/css/xterm.css"; import { Terminal } from "xterm"; type types = { addChar: (char: string) => void; }; const XTerm: FunctionComponent<types> = ({ addChar, }) => { const terminalElement = useRef<HTMLDivElement>(null); useEffect(() => { var term = new Terminal(); term.open(terminalElement.current as HTMLDivElement); term.onKey(({ domEvent }) => { addChar(domEvent.key); return term.write(key); }); term.write("Hostname: "); return () => { term.clear(); }; }, []); return <div ref={terminalElement}></div>; }; export default XTerm;

El problema es que la cadena se restablece a "" me siento triste :(

Gracias.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Finalmente encuentro el problema real. Los estados no cambian en los controladores de eventos. Entonces, el evento de devolución de llamada onKey solo toma el primer valor inicializado del estado.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Encontré que el método useState setter del problema no se actualiza inmediatamente. Gracias a todos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda