2016-11-20 47 views
0

我有一個字段poll.id是包含多個部分的窗體的一部分。每個部分都包含在具有@reduxForm註釋的組件中,並且每個組件可以擁有自己獨特的驗證方法。syncError沒有標記字段實例與點語法名稱

我的問題是,在這種情況下,當validatePoll返回一個驗證異常,它不顯示在字段級別。我想知道這是否與該領域的點語法有關。

@reduxForm({ 
    form: 'posteditor', 
    destroyOnUnmount:false, 
}) 
@autobind 
class MyForm extends React.Component { 

    [...] 

    pollButton(field){ 
     console.log('poll.id', field);//meta.error = undefined 
     [...] 
    } 


    poll(){ 
     const { poll, visible, syncErrors } = this.props; 
     return (
      <Field 
      name="poll.id" 
      value={poll && poll.id} 
      type="number" 
      component={this.pollButton} 
      props={{ 
       visible: visible, 
       questions: (poll && poll.questions) || [] 
      }} 
      /> 
     ); 
    } 
} 


@reduxForm({ 
    form: 'posteditor', 
    validate: validatePoll, 
    destroyOnUnmount:false, 
}) 
@autobind 
class PostPoll extends React.Component { 

enter image description here enter image description here

回答

0

你忽略了你的驗證功能,但我的猜測是,你正在返回此:

validate(values) { 
    const errors = {} 
    if(!values.poll.id) { 
    errors['poll.id'] = 'Required' // ❌ 
    } 
    return errors 
} 

...你應該被返回此:

validate(values) { 
    const errors = {} 
    if(!values.poll.id) { 
    errors.poll = { id: 'Required' } // ✅ 
    } 
    return errors 
}