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

213
Vistas
la lista de tareas de edición en línea no puede cambiar el valor de entrada

Creo que me perdí algo, pero no sé qué es, sé que value={this.text} vinculará el valor del estado, pero dado que se trata de una edición en línea, quiero llenar el campo de entrada con su valor existente en lugar de dejarlo en blanco. .

http://jsbin.com/fugowebovi/1/editar

 class TodoItem extends React.Component { constructor(){ super() this.state = { text: '', isEditing: false }; this.onClickEdit = this.onClickEdit.bind(this); this.onSaveEdit = this.onSaveEdit.bind(this); this.onTextChanged = this.onTextChanged.bind(this); } onClickEdit(){ this.setState({isEditing: !this.state.isEditing}); } onSaveEdit(){ this.setState({ text: this.state.text, isEditing: false }); } onTextChanged(e){ this.setState({text: e.target.value}); } render(){ return( <li> {this.state.isEditing ? '' : <span>{this.props.item}</span>} {this.state.isEditing ? <span><input value={this.props.item} type="text" onChange={this.onTextChanged}/></span> :''} &nbsp;&nbsp; {this.state.isEditing ? '' : <button onClick={this.onClickEdit}>Edit</button>} <button onClick={this.onSaveEdit}>Save</button> </li> ) } }

ahora el problema es que bloqueó la pulsación de tecla.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cambie <input value={this.props.item} type="text" onChange={this.onTextChanged}/> a

<input value={this.state.text} type="text" onChange={this.onTextChanged}/>

Como está construyendo un componente controlado, debe proporcionarle su texto actual como valor. Ver componente controlado en los documentos

over 4 years ago · Santiago Trujillo Denunciar

0

Usas el valor de props y cambias el valor del estado local. Es por eso que el valor de entrada no se cambia.

Prueba esto:

 class TodoItem extends React.Component { constructor(props){ super() this.state = { text: props.item, isEditing: false }; this.onClickEdit = this.onClickEdit.bind(this); this.onSaveEdit = this.onSaveEdit.bind(this); this.onTextChanged = this.onTextChanged.bind(this); } onClickEdit(){ this.setState({isEditing: !this.state.isEditing}); } onSaveEdit(){ this.setState({ isEditing: false }); } onTextChanged(e){ this.setState({text: e.target.value}); } render(){ return( <li> {this.state.isEditing ? '' : <span>{this.state.text}</span>} {this.state.isEditing ? <span><input value={this.state.text} type="text" onChange={this.onTextChanged}/></span> :''} &nbsp;&nbsp; {this.state.isEditing ? '' : <button onClick={this.onClickEdit}>Edit</button>} <button onClick={this.onSaveEdit}>Save</button> </li> ) } }
over 4 years ago · Santiago Trujillo 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