Reactには3つのコンポーネントがあり、1つはフォームにレンダリングするために私の子コンポーネントを渡すコンテナとして機能します。フォームが送信されると、親コンポーネント内の各子コンポーネントを取得し、それぞれのコンポーネントをループし、私のサーバが期待するオブジェクトを作成し、オブジェクトのリストをサーバに送り返したいと思います。私は、親コンポーネントのonSubmit関数内の子コンポーネントにアクセスするのに苦労しています。ここで Reactで子供から親にデータを渡す
は私の親コンポーネントParentFixturesComponent.js私の親は、すべて私の子供たちのコンポーネント
ChildFixturesContainer.js
class Fixtures extends Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
}
handleChange(name) {
this.console.log(this.props);
}
render() {
return (
<div className="tray tray-center">
<div className="row">
<div className="col-md-8">
<div className="panel mb25 mt5">
<div className="panel-heading">
<span className="panel-title">Fixtures</span>
</div>
<div className="panel-body p20 pb10">
<div id="fixture-parent" onChange={this.handleChange.bind(this)}>
{this.props.children}
</div>
</div>
<div className="section-divider mb40" id="spy1"> </div>
<button className="btn btn-primary tm-tag" onClick={this.props.addMatch}>Add Match</button>
<button className="btn btn-alert tm-tag" onClick={this.props.save}>Save</button>
</div>
</div>
</div>
</div>
);
}
}
export default Fixtures;
をレンダリング私のフォームを保持している
class ParentFixturesComponent extends Component {
constructor() {
super();
this.state = {
numChildren: 0,
};
}
onAddMatch() {
this.setState({
numChildren: this.state.numChildren + 1
});
}
onSubmit(e) {
e.preventDefault();
// loop through the child components
// create a match object with them
// var match = {
// id: uuid(),
// title: uuid(),
// start: e.something,
// end: e.something,
// };
console.log("submit works");
}
render() {
const children = [];
for (let i = 0; i < this.state.numChildren; i += 1) {
children.push(<SingleMatchForm key={uuid()}/>)
}
return (
<Fixtures addMatch={this.onAddMatch.bind(this)} save={this.onSubmit.bind(this)} >
{children}
</Fixtures>
);
}
}
export default ParentFixturesComponent;
コンポーネントでありますそして最後に私の子供の個人的なフォームc omponent。
SingleMatchComponent.js
class SingleMatchForm extends Component {
constructor() {
super();
this.state = {
startDate: moment()
};
}
handleChange(date) {
this.setState({
startDate: date
});
}
render() {
return (
<div className="row">
<div key={this.props.id} className="form-group">
<label className="control-label col-md-2">New Match</label>
<div className="col-md-6">
<DatePicker
selected={this.state.startDate}
onChange={this.handleChange.bind(this)}/>
<div className="section-divider mb40" id="spy1"> </div>
</div>
</div>
</div>
);
}
}
export default SingleMatchForm;
こんにちはニック、私はコールバックとして機能する親から子への関数として関数を渡す必要があります。したがって、onSubmit()関数が呼び出されると、すべてのデータが親コンポーネントの状態になります。サンプルコードについては、このスレッドを参照してくださいhttp://stackoverflow.com/questions/38394015/how-to-pass-data-from-child-component-to-its-parent-in-reactjs –