jru*_*ter 21 javascript reactjs redux redux-form
我试图使用此代码将动态表单名称传递给reduxForm.
这是我找到的代码:
let FormAddress = compose(connect((state, props) => ({form: props.form})), reduxForm({destroyOnUnmount: false, asyncBlurFields: []}))(ValidationForm);
Run Code Online (Sandbox Code Playgroud)
来自这篇文章:https: //github.com/erikras/redux-form/issues/603#issuecomment-254271319
但我不确定最新情况.
这就是我目前正在做的事情:
const formName = 'shippingAddress';
const form = reduxForm({
form: formName
});
export default connect(mapStateToProps)(CityStateZip);
Run Code Online (Sandbox Code Playgroud)
但我希望能够使用道具传递它,如下所示:
const formName = 'shippingAddress';
const form = reduxForm({
form: props.form
// validate
});
export default connect(mapStateToProps)(CityStateZip);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时,它会抱怨它不知道道具是什么 - 因为我认为它超出了上述功能的范围.
有人能帮我吗?
Par*_*nde 26
调用FormAddress组件的父组件应该在props中发送表单的名称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.
});
Run Code Online (Sandbox Code Playgroud)
这适合我.
jpd*_*rre 19
该片段基本上使用了库中的compose函数redux.这是你可以尝试的东西......
<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);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!