2016-11-09 27 views
7

Bir dinamik form adını reduxForm'a geçirmek için bu kodu kullanmaya çalışıyorum. Bu yazıda itibarenYeniden formda dinamik form adına nasıl geçersiniz?

let FormAddress = compose(connect((state, props) => ({form: props.form})), reduxForm({destroyOnUnmount: false, asyncBlurFields: []}))(ValidationForm); 

: Burada

buldum kodudur https://github.com/erikras/redux-form/issues/603#issuecomment-254271319

Ama ne oluyor gerçekten emin değilim. Bunu denediğinizde

const formName = 'shippingAddress'; 
const form = reduxForm({ 
    form: props.form 
    // validate 
}); 

export default connect(mapStateToProps)(CityStateZip); 

Ama:

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

export default connect(mapStateToProps)(CityStateZip); 

Ama bu gibi sahne kullanarak bunu geçmek mümkün olmak istiyorum:

Bu

Şu anda yapıyorum nasıl Bu, ne sahne olduğunu bilmediğinden şikayet ediyor - çünkü yukarıdaki işlevin kapsamı dışında olduğuna inanıyorum.

Birisi bana yardımcı olabilir mi?

+1

Burada kişisel öneri - ama çok daha fazla başarı elde ettim ** değil redux formunu kullanarak. Yaptığı işte harikadır, ancak uygulamanızdan karmaşıklık eklemeniz gerektiğinde, bununla çalışmak zorlaşır. İnsanların bununla büyük başarıları olduğunu biliyorum, ama burada yaşadığınız problem gibi bir şey redux formuna bağlı değilseniz 2 saniye sürüyor ... – ajmajmajma

+0

Sadece cevabın sizin için çalışıp çalışmadığını merak ediyorum – jpdelatorre

cevap

9

Bu parçacık temel olarak redux kitaplığından compose işlevini kullanır. İşte deneyebileceğiniz bir şey ...

Yani

<FormAddress name="shippingAddress" />

bu yardımcı olur

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

Umut senin components/FormAddress.js dosyada var!

8

props.form olarak sahne içinde formun adını göndermelidir FormAddress bileşeni çağıran ana bileşeni:

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

Bu benim için çalışıyor.

+2

Benim için gayet iyi çalışıyor , Teşekkürler! –