#javascript #reactjs
#javascript #reactjs
Вопрос:
Я не знаю, как описать название, простите меня. Но я серьезно застрял на чем-то. Я занимаюсь списком задач, в котором вы можете выполнять встроенное редактирование. Я застрял на скрытии кнопок управления: редактировать и удалять для определенной строки, когда присутствует состояние IsEdit для определенной строки.
var App = React.createClass({
getInitialState(){
return {
items:[1,2,3],
isEdit: null
}
},
renderEditForm(){
return(
<div>
<input type="text" />
<button onClick={this.saveHandler}>save</button>
</div>
)
},
ItemCtrl(index){
return(
<div className="itemCtrlWrap">
<button onClick={this.editHandler.bind(this,index)}>Edit</button>
<button onClick={this.dltHandler.bind(this, index)}>Delete</button>
</div>
)
},
editHandler(i){
this.setState({isEdit:i})
},
saveHandler(){
this.setState({isEdit:null})
},
dltHandler(index){
this.setState({items: this.state.items.filter((item,i) => i !== index)})
},
renderItem(){
return(
this.state.items.map((item,i)=>
<li key={i}> {this.state.isEdit==i ? this.renderEditForm() : item} {this.ItemCtrl(i)}</li>)
)
},
render(){
return(
<ul>
{this.renderItem()}
</ul>
)
}
})
Ответ №1:
Добавление условия к вашему ItemCtrl
методу, подобному этому, может помочь :
ItemCtrl(index){
return index !== this.state.isEdit ? (
<div className="itemCtrlWrap">
<button onClick={this.editHandler.bind(this,index)}>Edit</button>
<button onClick={this.dltHandler.bind(this, index)}>Delete</button>
</div>
) : '';
},
Комментарии:
1. Спасибо, как я мог это пропустить