私は反応する初心者です。私は反応について更新しようとしています。私はそれを作るための正確な論理を得ていないので、あなたの助けが必要です。
更新をクリックすると、選択した連絡先の値を取得することができましたが、後でその値を入力テキストボックスに入力する方法がなくなり、値の変更後に提出すると選択した連絡先を更新します。私は変わりました変更するが、私は理解していない。反応の更新機能
手がかり私は知っていた:
this.refs.name.valueとthis.refs.number.valueは入力テキストボックスにある値です。更新時には、これらの値を対応するインデックスの状態に設定する必要があります。
私のコードとスクリーンショットは以下の通りです:
Person.js - 番号をキーとしたとき、個々の数を考慮すると、これは、Contact.js
editcontact(id){
this.props.onChange(id);
}
render() {
return(
<div className="panel panel-default">
<div className="panel-heading">
<h4>{this.props.detail.name} </h4>
<a className="b" href="#" onClick={this.deletecontact.bind(this,this.props.detail.number)}> Delete </a>
<a className="b" href="#" onClick={this.editcontact.bind(this,this.props.detail.number)}> Update </a>
</div>
<h6 className="panel-body">{this.props.detail.number}</h6>
</div>
</div>
)
}
ユニークです
editcontact(id)
{
this.props.onChange(id);
}
render() {
var details;
if(this.props.data){
details=this.props.data.map(dts=>{
return(
<Person key={dts.number} detail={dts} onChange={this.editcontact.bind(this)} onDelete={this.deletecontact.bind(this)}></Person>
)
})
}
次にあなたが必要なものApp.js
handleEdit(id){
console.log(id);
let cts=this.state.contacts;
let index=cts.findIndex(x => x.number === id);
console.log(cts[index]);
this.setState({ selectedContact: cts[index]; });
}
render() {
return (
<div className="App">
<div className="page-header">
<h2>Contact list</h2>
</div>
<AddContact newOne={this.state.selectedContact} addcontact={this.handleAddition.bind(this)}></AddContact>
<Contact onChange={this.handleEdit.bind(this)} onDelete={this.handleDelete.bind(this)} data={this.state.contacts}> </Contact>
</div>
);
}
AddContact.js
constructor(){
super();
this.state={
newContact:{
name:'',
number:''
}
}
}
addcontact(e){
// console.log(this.refs.name.value);\
e.preventDefault();
this.setState({
newContact:{
name: this.refs.name.value,
number:this.refs.number.value
}
},function(){
console.log(this.state.newContact);
this.props.addcontact(this.state.newContact);
})
this.refs.name.value="";
this.refs.number.value="";
}
render() {
console.log(this.props.newOne);
return (
<div className="col-md-6">
<form onSubmit={this.addcontact.bind(this)}>
<div className="form-group">
<label>Name </label>
<input className="form-control" type="text" ref="name" />
</div>
<div className="form-group">
<label>Number</label>
<input className="form-control" type="number" ref="number" />
</div>
<input type="submit" value="Submit"/>
</form>
</div>
);
}
}
ロジックは、あなたの 'AddContact'コンポーネントに行く' setState'と 'state'を使用して小道具を渡す、あなたは' AddContact'コンポーネントを示すことができただろうか? –
私はあまりにもそれを追加しました。 – Gayathri