2016-11-09 8 views
7

このコードを使用して、動的フォーム名をreduxFormに渡そうとしています。この記事からあなたはどのようにしてredux形式の動的フォーム名を渡しますか?

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: props.form 
    // validate 
}); 

export default connect(mapStateToProps)(CityStateZip); 

しかし:

const formName = 'shippingAddress'; 
const form = reduxForm({ 
    form: formName 
}); 

export default connect(mapStateToProps)(CityStateZip); 

をしかし、私はこのように、小道具を使用して、それを渡すことができるようにしたいと思いますそれはそれがそれが上記の関数の範囲外であると信じているので、それはそれが小道具が何であるかを知らないと訴える。

誰かが私を助けることができますか?

+1

ここに個人的な提案がありますが、私はより多くの成功を収めました**還元型を使用していません**。それは素晴らしいものですが、あなたのアプリケーションから複雑さを追加する必要が生じたときには、それを扱うのが難しくなります。私は人々がそれで大きな成功を収めていることを知っていますが、あなたがここにいる問題のようなものは、あなたが還元型に頼っていない場合には2秒かかります... – ajmajmajma

+0

私の答えがあなたのために働いたかどうかだけ – jpdelatorre

答えて

9

このスニペットは基本的にreduxライブラリのcompose機能を使用しています。ここにあなたのcomponents/FormAddress.jsファイルにあなたが試すことができます何か...

<FormAddress name="shippingAddress" />

ので

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); 

・ホープ、このことができますです!

8

FormAddressコンポーネントを呼び出すと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. 
}); 

これは私のために動作します。

+2

私のために働いた、ありがとう! –

関連する問題