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

155
Visualizações
¿Cómo manejar deshacer/rehacer en entradas modificadas mediante programación con reaccionar?

Al intentar implementar una entrada de texto con una selección que inserta opciones en la entrada (en la posición del cursor), noté que el comportamiento de deshacer/rehacer es inconsistente con los navegadores que probé (chrome v94, firefox 89, safari 14, edge v93 )

A continuación se muestra un ejemplo de código de muestra en el que puede notar la diferencia de comportamiento entre dos entradas, una en la que el valor se establece tal cual y otra en la que el valor se transforma en mayúsculas.

ctrl/cmd + z funciona para deshacer y ctrl/cmd + shift + z funciona para rehacer solo en la primera entrada

 const { useState } = React; const Example = () => { const [text, setText] = useState(""); const [upperCaseText, setUpperCaseText] = useState(""); return ( <div className="App"> <input type="text" value={text} onChange={({ target }) => setText(target.value)} placeholder="text set as is" /> <input type="text" value={upperCaseText} onChange={({ target }) => setUpperCaseText(target.value.toUpperCase())} placeholder="text uppercased" /> </div> ) }; ReactDOM.render( <Example />, document.body );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>

Hay una publicación y respuesta similares aquí , pero solo funciona con limitaciones, document.execCommand está en desuso y no es compatible con Firefox. También intenté enviar un evento y forzar el valor de entrada como se describe aquí e incluso enviar eventos de keydown de teclado, pero aunque el campo de entrada está lleno, los navegadores aún no reconocen esas entradas como entradas del usuario y las excluyen de la entrada deshacer/ rehacer la historia.

¿Hay alguna manera de que los navegadores traten los cambios programáticos en la entrada de la misma manera que la entrada manual del usuario (presionar una tecla o pegar en el portapapeles), o hay que implementar un historial de cambios de entrada personalizado aquí?

about 4 years ago · Juan Pablo Isaza
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