首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在redux表单中传入动态表单名称?

如何在redux表单中传入动态表单名称?
EN

Stack Overflow用户
提问于 2016-11-09 22:49:25
回答 2查看 9K关注 0票数 23

我正在尝试使用这段代码将一个动态表单名称传递给reduxForm。

下面是我找到的代码:

代码语言:javascript
复制
let FormAddress = compose(connect((state, props) => ({form: props.form})), reduxForm({destroyOnUnmount: false, asyncBlurFields: []}))(ValidationForm);

摘自本文:https://github.com/erikras/redux-form/issues/603#issuecomment-254271319

但我不是很清楚到底发生了什么。

这就是我目前所做的:

代码语言:javascript
复制
const formName = 'shippingAddress';
const form = reduxForm({
  form: formName
});

export default connect(mapStateToProps)(CityStateZip);

但我希望能够使用道具传递它,如下所示:

代码语言:javascript
复制
const formName = 'shippingAddress';
const form = reduxForm({
  form: props.form
  // validate
});

export default connect(mapStateToProps)(CityStateZip);

但当我尝试这样做时,它抱怨说它不知道什么是props -因为我认为它超出了上面的函数的范围。

有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-21 14:45:43

调用FormAddress组件的父组件应该以props.form的形式在props中发送表单的名称

代码语言:javascript
复制
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.
});

这对我很有效。

票数 39
EN

Stack Overflow用户

发布于 2016-11-19 10:55:21

该代码片段基本上使用了redux库中的compose函数。这是你可以尝试的..。

<FormAddress name="shippingAddress" />

所以在你的components/FormAddress.js文件中

代码语言:javascript
复制
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);

希望这能有所帮助!

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40509754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档