InputField
& Button
- это пользовательские компоненты, которые входят в форму для создания формы. Моя проблема заключается в том, как я могу отправить данные обратно, чтобы сформировать так, что нажатие кнопки, я могу стрелять Аякс по форме с данными (имя пользователя & пароля):React - Can Детский компонент Отправить значение Вернуться к родительской форме
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>;
}
}
Ошибка: Я получаю ошибку e.target is undefined
на материнской storeEmail FUNC.
Вы можете передать обработчик событий «keyup» на входы, чтобы состояние родительского компонента постоянно обновлялось. Затем всякий раз, когда handleSignup вызывается, компонент формы уже имеет все необходимое. – theleebriggs
@ rufio86 прав, вам нужно сначала обновить состояние родительского компонента. И вам нужно связать обратный вызов 'handleSignUp', тогда вы получите свое состояние. – hawk
извинения как за @ rufio86 & hawk, просьба уточнить – Kayote