Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

101
Views
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 answers
Answer question

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 Report

0

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

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!