InputField
& Button
は、フォームを作成するためのフォームに入るカスタムコンポーネントです。私の問題は、私はそのボタンのクリックでを形成するために、バックアップデータを送ればいいか、私はデータをフォーム(ユーザー名&パスワード)にAJAXを発射することができます:React - 子コンポーネントは値を親フォームに返すことができる
export default auth.authApi(
class SignUpViaEmail extends Component{
constructor(props){
super(props);
this.state = {
email : "",
password : ""
};
this.storeEmail = this.storeEmail.bind(this);
this.storePassword = this.storePassword.bind(this);
}
storeEmail(e){
this.setState({ email : e.target.value });
}
storePassword(e){
this.setState({ password : e.target.value });
}
handleSignUp(){
this.props.handleSignUp(this.state);
}
render(){
return(
<div className="pageContainer">
<form action="" method="post">
<InputField labelClass = "label"
labelText = "Username"
inputId = "signUp_username"
inputType = "email"
inputPlaceholder = "registered email"
inputClass = "input" />
<Button btnClass = "btnClass"
btnLabel = "Submit"
onClickEvent = { handleSignUp } />
</form>
</div>
);
}
}
);
するか、それは推奨されません&私はいけませんフォーム内にカスタム子コンポーネントを作成しますか?
子コンポーネント=>InputField
import React,
{ Component } from "react";
export class InputField extends Component{
constructor(props){
super(props);
this.state = {
value : ""
};
this.onUserInput = this.onUserInput.bind(this);
}
onUserInput(e){
this.setState({ value : e.target.value });
this.props.storeInParentState({[ this.props.inputType ] : e.target.value });
}
render(){
return <div className = "">
<label htmlFor = {this.props.inputId}
className = {this.props.labelClass}>
{this.props.labelText}
</label>
<input id = {this.props.inputId}
type = {this.props.inputType}
onChange = {this.onUserInput} />
<span className = {this.props.validationClass}>
{ this.props.validationNotice }
</span>
</div>;
}
}
エラー:私は親storeEmailのFUNC上のエラーe.target is undefined
を取得します。
'keyup'イベントハンドラを入力に渡して、親コンポーネントの状態が常に最新の状態になるようにすることができます。その後、handleSignupが呼び出されるたびに、フォームコンポーネントには必要なものすべてが既に用意されています。 – theleebriggs
@ rufio86が正しいです。親コンポーネントの状態を最初に更新する必要があります。そして、あなたは 'handleSignUp'コールバックをバインドする必要があります。そしてあなたはあなたの状態を取得します。 – hawk
@ rufio86とhawkの両方にお詫び申し上げます。 – Kayote