2017-11-25 10 views
1

ボタンをクリックするたびにFieldArrayを押すようにこのコードを書いていますが、それはrenderContract FieldArrayコンポーネント内でのみ適用されます。新しいFieldArrayを外部のレンダリング関数からプッシュするには?

const renderContact = ({ fields, meta: { error } }) => (
    <div> 
    {fields.map((contact, index) => (
     <div key={index}> 
     <div className="row form-pad"> 
      <div className="col-md-3"> 
      <span>Country Code {index + 1}:<span className="requiredField text-danger"> * </span>: </span> 
      </div> 
      <div className="col-md-7"> 
      <Field name={`${contact}.landlineCountryCode`} component={renderField}type="text"/> 
      </div> 
     </div> 
     </div> 
    ))} 
    <button className="btn btn-primary" onClick={() => fields.push({})}> 
     Add Contact 
    </button> 
    </div> 
) 

と親フォームのコンポーネントでこのようにそれをレンダリング:

<FieldArray name="contact" component={renderContact} /> 

どのように私はfieldArray外fields.push({})を使用することができますか?

EDIT:

私は無駄にこれを試してみました:

<button type="button" onClick={() => props.dispatch(arrayPush('PersonalInfoForm', 'contact', [{}]))}> Add Contact</button> 

答えて

1

あなたはFieldArray

外部から fields.push({})を達成するために formfieldnameでアクション arrayPushを派遣することができます
import { arrayPush } from 'redux-form'; 

// ... 
dispatch(arrayPush('myForm', 'contact', {})); 
+1

私はこれを試しましたが、 ' 'が動作しませんでした。何か不足していますか? –

+0

arrayPush( 'PersonalInfoForm'、 'contact'、{}) –

+0

私は既に私のバグが何かを理解しました。それであなたの右のすべて。私は私のフォームの名前を自分のコンポーネントの名前とは違うものにします。 'let personalInfoForm = reduxForm({ 形式: 'syncValidation'、 )})(PersonalInfoForm)' –

関連する問題