के साथ नहीं दिख रहे हैं जब मैंने रेडक्स-फॉर्म 5.3.1 का उपयोग किया था, तो मैं अपने एक्शन क्रिएटर तक पहुंचने में सक्षम था। लेकिन जैसा कि मुझे सामग्री-यूआई की आवश्यकता थी, मैंने इसे 6.0.0-आरसी 3 में अपडेट किया।एक्शन क्रिएटर "this.props" में रेडक्स-फॉर्म 6.0.0-rc.3
5.3.1 से 6.0.0 में परिवर्तन: आदानों के नीचे से
const { handleSubmit, fields: { email, password, passwordConfirm }} = this.props;
- निकाला गया त्रुटियों सत्यापन:
- हटाया प्रस्तुत करना (से क्षेत्रों)
निर्यात डिफ़ॉल्ट से
- हटाया क्षेत्रों सरणी:
export default reduxForm({ form: 'signup', fields: ['email', 'password', 'passwordConfirm'], validate }, mapStateToProps, actions)(Signup);
- सामग्री-UI घटक के लिए जोड़ा गया रैपर:
import { renderTextField, renderCheckbox, renderSelectField, renderDatePicker } from '../material-ui-wrapper';
कोड:
1 - console.log (this.props) लॉग कोई कार्रवाई नहीं की निर्माता - लॉग इन करना चाहिए signupUser समारोह
'use strict'; import React, { Component } from 'react'; import { reduxForm, Field } from 'redux-form'; import * as actions from '../../actions'; import { renderTextField } from '../material-ui-wrapper'; import {Card, CardActions, CardHeader, CardText} from 'material-ui/Card'; import FlatButton from 'material-ui/FlatButton'; class Signup extends Component { handleFormSubmit(formProps) { console.log(this.props); this.props.signupUser(formProps); } renderAlert() { if (this.props.errorMessage) { return ( <div className="error"> {this.props.errorMessage} </div> ); } } render() { const { handleSubmit, pristine, submitting } = this.props; return ( <form id="form" onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}> <Card> <CardHeader title="Cadastre-se"/> <CardText> <Field name="email" component={renderTextField} label={"Email"} fieldType="text"/> <Field name="password" component={renderTextField} label={"Senha"} fieldType="password"/> <Field name="passwordConfirm" component={renderTextField} label={"Confirmação de senha"} fieldType="password"/> {this.renderAlert()} </CardText> <CardActions> <FlatButton type="submit" label="Criar!"/> </CardActions> </Card> </form> ); } } function validate(formProps) { const errors = {}; if (!formProps.email || !/^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(formProps.email)) { errors.email = 'Por favor, informe um email válido'; } if (formProps.password !== formProps.passwordConfirm) { errors.password = 'Senhas devem ser iguais.'; } if (!formProps.password) { errors.password = 'Por favor, informe uma senha.'; } if (!formProps.passwordConfirm) { errors.passwordConfirm = 'Por favor, confirme a sua senha.'; } return errors; } function mapStateToProps(state) { return { errorMessage: state.auth.error }; } export default reduxForm({ form: 'signup', validate }, mapStateToProps, actions)(Signup);
संपादित
परिवर्तित:
export default reduxForm({ form: 'signup', validate }, mapStateToProps, actions)(Signup);
करने के लिए:
Signup = reduxForm({ form: 'signup', validate })(Signup); export default Signup = connect(mapStateToProps, actions)(Signup);
यह काम किया। क्या यह ठीक करने का सबसे सही तरीका है?
हाँ, आप 'कनेक्ट करना होगा()' 'मैन्युअल v6' में। –
ओह, लड़का ... एपीआई रिग्रेशन, पिछड़ा संगत नहीं, यह दूरी –
से भयानक गंध करता है @ इगोरडोनिन ओपी एक प्रमुख संस्करण (v5 -> v6) के माध्यम से काम कर रहा था, इसलिए यह सेमेस्टर बिंदु से स्वीकार्य है। – gustavohenke