我正在尝试使用这段代码将一个动态表单名称传递给reduxForm。
下面是我找到的代码:
let FormAddress = compose(connect((state, props) => ({form: props.form})), reduxForm({destroyOnUnmount: false, asyncBlurFields: []}))(ValidationForm);
摘自本文:https://github.com/erikras/redux-form/issues/603#issuecomment-254271319
但我不是很清楚到底发生了什么。
这就是我目前所做的:
const formName = 'shippingAddress';
const form = reduxForm({
form: formName
});
export default connect(mapStateToProps)(CityStateZip);
但我希望能够使用道具传递它,如下所示:
const formName = 'shippingAddress';
const form = reduxForm({
form: props.form
// validate
});
export default connect(mapStateToProps)(CityStateZip);
但当我尝试这样做时,它抱怨说它不知道什么是props -因为我认为它超出了上面的函数的范围。
有人能帮我吗?
发布于 2017-04-21 14:45:43
调用FormAddress
组件的父组件应该以props.form
的形式在props中发送表单的名称
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.
});
这对我很有效。
发布于 2016-11-19 10:55:21
该代码片段基本上使用了redux
库中的compose
函数。这是你可以尝试的..。
<FormAddress name="shippingAddress" />
所以在你的components/FormAddress.js
文件中
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);
希望这能有所帮助!
https://stackoverflow.com/questions/40509754
复制相似问题