2017-07-10 25 views
0
class InputTextComp extends React.Component { 

    constructor(props) { 
    super(props); 
    this.state = { 
     validations: [] 
    }; 
    } 


    handleChange(e){ 

    let newState = this.state; 


    newState.validations.push({ 
     type: e.target.name, 
     value: e.target.value 
     }); 

    this.setState(...this.state, newState); 

    } 

    render() { 

     return (
     <Form> 
      <Form.Group widths='equal'> 
      <Form.Field> 
       <label>Placeholder</label> 
       <input name='placeholder' onChange={this.handleChange} placeholder='Placeholder' /> 
      </Form.Field> 
      <Form.Field> 
       <label>Min length</label> 
       <input name='minlength' onChange={this.handleChange} placeholder='Min length' /> 
      </Form.Field> 
      <Form.Field> 
       <label>Max length</label> 
       <input name='maxlength' onChange={this.handleChange} placeholder='Max length' /> 
      </Form.Field> 
      </Form.Group> 
     </Form> 
    ) 

    } 

} 

我有此組件,其中i在輸入使用的onChange,我有每個輸入值 在我的狀態陣列,對象數組,對象,但是當我在一個輸入把值推一個新的對象等,與每一個變化反應:onChange如何在數組中只能推一次?

validations: [ 
{type:'maxlength', value: '1'}, 
{type:'maxlength', value: '12'}, 
{type:'maxlength', value: '120'} 
] 

我希望有這樣的

validations: [ 
{type:'maxlength', value: '120'} 
] 

回答

0

陣列中的每個輸入只有一個對象,而不是使用驗證一個數組,你應該使用哈希

validations: { placeholder: '', minlength: '', maxlength: '' }

onChange可以設置與最新的變化相應的驗證。

newState[e.target.name] = e.target.value

+0

我知道這將是更容易使用的對象,但我真的需要驗證是一個數組使每個對象具有它自己的信息如{類型:「MINLENGTH」,值:1,meassage:「最小長度是1'} – scully

+0

爲什麼你不能這樣做呢? 驗證:{ 佔位符:{消息: '最小長度是1',值:1' }, MINLENGTH:{消息: '最小長度是1',值:1' }, 最大長度:{消息: '最小長度爲1',值:1'} } – pk1m

相關問題