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

219
Views
¿Cuál es la mejor práctica para hacer un campo de texto editable opcionalmente en reaccionar?

Así que estoy tratando de hacer una interacción que sea similar al explorador de archivos en VSCode. Muestro una lista de elementos y hago clic en un elemento para seleccionarlo. Quiero poder presionar Intro cuando se seleccione un elemento para que ese elemento sea editable.

Mi primer intento fue usar la propiedad contentEditable , ya que parecía la manera más fácil de activar y desactivar la edición en mi div:

 ... render( <div contentEditable={this.state.isEditable}> {this.state.text} </div> )

Pero cuando uso este método, recibo esta advertencia:

[Error] Advertencia: un componente es contentEditable por contenido y contiene elementos children administrados por React. Ahora es su responsabilidad garantizar que ninguno de esos nodos se modifique o duplique inesperadamente. Esto probablemente no sea intencional.

Si entiendo correctamente, contentEditable está rompiendo la convención de React, y esto puede causar problemas si uso este método.

Como he leído más sobre contentEditable en general, también he visto que hay algunos problemas con el HTML generado en el interior que es inconsistente en diferentes navegadores.

Entonces, mi pregunta es, ¿cuál sería la mejor práctica estándar para lograr algo como esto en el que quiero cambiar entre un elemento de solo visualización y un elemento de entrada? ¿Debería usar una etiqueta de entrada y deshabilitarla en lugar de habilitarla?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede considerar usar los atributos nativos de entrada, solo lectura/deshabilitados, según su caso de uso, por ejemplo:

 <input readOnly={!this.state.isEditable}/>
about 4 years ago · Juan Pablo Isaza Report

0

contenteditable le dará HTML, pero no está usando this.state.text como HTML (solo texto), y como ha notado, el HTML varía de un navegador a otro. Cambiaría una input con estilo para el div :

 return this.state.isEditable ? <input className="styling-class" type="text" value={this.state.text} /> : <div>{this.state.text}</div> ;
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!