0

我有一個表格,在響應」使用單一handleInputChange方法對多個輸入字段(反應)

render() { 
    return (
     <div> 
     <form onSubmit={this.onFormSubmit}> 
      <input 
      value={this.state.first} 
      /> 

      <input 
      value={this.state.second} 
      /> 

      <input 
      value={this.state.third} 
      /> 
      //.... many more 
     </form> 
    //... 
)} 

handleInputChange通常是這樣的:

handleInputChange(e) { 
    this.setState({value: e.target.value }); 
    } 

現在,因爲我有許多不同的輸入字段,我通常會做很多不同的handleInputChange方法。但是,所有這些處理輸入更改的東西基本上都是相同的:它們根據當前正在編輯哪個輸入字段重新設置狀態

怎麼會的我,而不是寫三種handleInputChange方法都做這樣的事情:

handleInputChangeFirst(e) { 
    this.setState({first: e.target.value }); 
    } 
    handleInputChangeSecond(e) { 
    this.setState({second: e.target.value }); 
    } 

...做到這一切與一個單一的handleInputChange,需要然後檢查其值更新?我如何讓handleInputChange知道正在編輯的輸入字段並作出相應的反應?

回答

1

你可以有一個通用的方法handleInputChange

handleInputChange(property) { 
    return e => { 
    this.setState({ 
     [property]: e.target.value 
    }); 
    }; 
} 

那你會這樣使用:

<input 
    value={this.state.first} 
    onChange={this.handleInputChange('first')} 
/> 
+0

我也不敢給我'handleInputChange'事件了呢? –

+0

這個'handleInputChange'返回一個函數,它將事件作爲唯一的參數。它基本上是一個處理程序的工廠。 –

+0

有趣!爲什麼我必須這樣改變它,或者你爲什麼決定這樣做? –

相關問題