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

214
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
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