这是我的登录页面容器组件:
export class Loginpage extends React.Component {
constructor(props) {
super(props);
this.state = {
toggleSignUp: false,
displayName: '',
signUpEmail: '',
signUpPassword: ''
};
}
//Sign up functions
handleDisplayNameChange = (e) => {
const displayName = e.target.value;
this.setState(() => ({ displayName }));
}
handleSignUpEmailChange = (e) => {
const signUpEmail = e.target.value;
this.setState(() => ({ signUpEmail }));
}
handleSignUpPasswordChange = (e) => {
const signUpPassword = e.target.value;
this.setState(() => ({ signUpPassword }));
}
startSignUp = () => {
this.props.startSignUp(this.state.signUpEmail, this.state.signUpPassword);
}
render() {
return (
<div className="login-container">
<SignUp
toggleSignUp={this.toggleSignUp}
displayName={this.state.displayName}
signUpEmail={this.state.signUpEmail}
signUpPassword={this.state.signUpPassword}
handleDisplayNameChange={this.handleDisplayNameChange}
handleSignUpEmailChange={this.handleSignUpEmailChange}
handleSignUpPasswordChange={this.handleSignUpPasswordChange}
startSignUp={this.startSignUp}
/>
</div>
)
}
}
因为我只希望容器组件与redux状态通信,所以,我决定将值和回调函数传递给SignUp组件,这样SignUp组件将只是无状态组件而不需要connect()()到redux .
这是我的SignUp子组件:
const SignUp = (
{displayName,
signUpEmail,
signUpPassword,
handleDisplayNameChange,
handleSignUpEmailChange,
handleSignUpPasswordChange,
startSignUp}
) => (
<div>
<div>
<label>
<span>Name</span>
<input type="text" value={displayName} onChange={handleDisplayNameChange} />
</label>
<label>
<span>Email</span>
<input type="email" value={signUpEmail} onChange={handleSignUpEmailChange} />
</label>
<label >
<span>Password</span>
<input type="password" value={signUpPassword} onChange={handleSignUpPasswordChange} />
</label>
<button type="button" onClick={startSignUp}>Sign up</button>
</div>
</div>
)
代码工作正常,我只是不确定这是否是管理反应组件结构的正确方法?我很怀疑使用props将值和回调函数传递给子组件是一种正确的方法 .