実現したいこと
(React.js)
登録機能にてemailとpasswordを打ち込む画面。
PropTypesを追加し、validation機能追加したい
困っていること
親コンポネントにどうデータを渡したらよいか不明
コード
(思っていることなどはコード内に記載いたしました。)
親コンポネント
class RegisterContainer extends Component { constructor(props) { super(props); } render() { if (!this.props.registerOutcome) {//子componentから送られてくる値registerOutcomeで判断?? (子→親のデータ受け渡しはしない方がよいので、私の勘違いか??) return ( <div className="register"> <Navigation /> <h2> Register new account</h2> <RegisterForm /> </div> ); } if (this.props.registerOutcome.error){ return ( <div className="register"> <Navigation /> <h2> Register new account</h2> <h3>Registration failed: {this.props.registerOutcome.errorType}</h3> <RegisterForm /> </div> ); } } } function mapStateToProps(state) { return { registerOutcome: state.registerOutcome }; } export default connect(mapStateToProps)(RegisterContainer);
子cpomponent
class RegisterForm extends Component { constructor(props) { super(props); this.state = { email: '', password: '', }; this.handleEmailChange = this.handleEmailChange.bind(this); this.handlePasswordChange = this.handlePasswordChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); } handleEmailChange(event) { this.setState({ email: event.target.value }); } handlePasswordChange(event) { this.setState({ password: event.target.value }); } handleSubmit(event) { event.preventDefault(); this.props.registerUser(this.state.email, this.state.password); this.setState({ email: '', password: '' }); } render() { return ( <div className="list-input col-sm-6 float-sm-right"> <h2 className="alert alert-info text-center">Register</h2> <form className="form-group" onSubmit={this.handleSubmit}> <input className="form-control form-control-lg border-info text-info" type="text" name="email" value={this.state.email} onChange={this.handleEmailChange} /> <input className="form-control form-control-lg border-info text-info" type="password" name="password" value={this.state.password} onChange={this.handlePasswordChange} /> <input type="submit" value="Submit" /> </form> </div> ); } } //ここでチェックするが、registerOutcomeとして親にどうデータを渡せばよいのか?? RegisterForm.propTypes = { email: PropTypes.string.isRequired password: PropTypes.string.isRequired }; function mapDispatchToProps(dispatchRegisterUser) { return bindActionCreators({ registerUser }, dispatchRegisterUser); } export default connect(null, mapDispatchToProps)(RegisterForm);
store?と思われるファイルのいちぶ
const logger = store => next => (action) => { console.log('Redux logger:'); console.group(action.type); console.info('Dispatching', action); let result = next(action); console.log('Next state', store.getState()); console.groupEnd(action.type); return result; };
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/16 02:28
2018/08/16 02:40
2018/08/16 03:20
2018/08/16 06:52
2018/08/16 07:29
2018/08/19 09:47