私はrender()メソッドで自分のフォームのコンポーネントは次のようになります作られています子供たちは{this.props.children}
として、ここでレンダリングされていることを反応の子どもの状態にアクセスするには?
render() {
return (
<form onSubmit={this.onSubmit} ref={(c)=>this._form=c}>
{this.props.children}
</form>
)
}
がお知らせするので、ユーザーは次のようにこのコンポーネントを使用することができます。
<Form onSubmit={this.submit} >
<Input name={"name"} id="name" labelName="Ime" placeholder="Unesite ime" type="text" >
<Validation rule="required" message="Ovo je obavezno polje"/>
</Input>
<Input name={"email"} id="email" labelName="Email" placeholder="Unesite email adresu" type="text" >
<Validation rule="required" message="Ovo je obavezno polje"/>
<Validation rule="email" message="Ovo je nije valjana email adresa"/>
</Input>
<button type="submit" value="Pošalji" >Pošalji</button>
</Form>
各Input
コンポーネントの状態をチェックして、その有効性を確認したいと思います。onSubmitMethod()
。
checkValidity() {
var sefl = this;
this.props.children.map((child) => {
if (child.type.name === "Input") {
//How to get state of child here
}
});
}
onSubmit(event) {
event.preventDefault();
var obj = serialize(this._form, { hash: true });
const validityOfForm = true; //hardcoded for now
this.checkValidity();
this.props.onSubmit(obj, validityOfForm);
}
はい、入力refはFormコンポーネントを参照していないので、フォームコンポーネント内でthis.refsと言うときは定義されていません –
これ以外の問題は、this.refs.myinput.stateは定義済みの状態のみを返します最初の時間(内部のコンストラクタ)は最新の状態ではありません。 –