Im essayant d'utiliser ce code pour passer un nom de formulaire dynamique dans reduxForm.
Voici le code que j'ai trouvé:
let FormAddress = compose(connect((state, props) => ({form: props.form})), reduxForm({destroyOnUnmount: false, asyncBlurFields: []}))(ValidationForm);
De cet article: https://github.com/erikras/redux-form/issues/603#issuecomment-254271319
Mais je ne suis pas vraiment sûr de ce qui se passe.
Voici comment je le fais actuellement:
const formName = 'shippingAddress';
const form = reduxForm({
form: formName
});
export default connect(mapStateToProps)(CityStateZip);
Mais je voudrais pouvoir le passer en utilisant des accessoires, comme ceci:
const formName = 'shippingAddress';
const form = reduxForm({
form: props.form
// validate
});
export default connect(mapStateToProps)(CityStateZip);
Mais quand j'essaye, il se plaint de ne pas savoir ce que sont les accessoires - parce que je pense que cela sort du cadre de la fonction ci-dessus.
Est-ce que quelqu'un peut m'aider?
Le composant parent qui appelle le composant FormAddress
doit envoyer le nom du formulaire dans les accessoires en tant que props.form
:
var formId="SomeId"
<FormAddress form={formId} />
// and in your FormAddress component have
const form = reduxForm({
//no need to put form again here as we are sending form props.
});
Cela fonctionne pour moi.
Cet extrait utilise essentiellement la fonction compose
de la bibliothèque redux
. Voici quelque chose que vous pouvez essayer ...
<FormAddress name="shippingAddress" />
Donc, dans votre components/FormAddress.js
fichier
import React from 'react';
import { compose } from 'redux';
import { connect } from 'react-redux';
import { reduxForm } from 'redux-form';
class FormAddress extends React.Component { ... }
const mapStateToProps = (state, ownProps) => {
return {
form: ownProps.name,
// other props...
}
}
export default compose(
connect(mapStateToProps),
reduxForm({
//other redux-form options...
})
)(FormAddress);
J'espère que cela t'aides!