2017-10-06 82 views
0

Im發送道具值到輸入字段。當im試圖編輯 字段它不是正在編輯..如何編寫onchange句柄函數。任何人都可以 簡要解釋有關對照和非輸入輸入字段在沒有編輯..如何寫入onchange函數輸入字段在reactjs

handleUserInput = (e) => { 
//what to do here in order to edit the input field 
} 
render() { 
    return(
     <div> 
      <div className="info"> 
       <label className="label">Store Name</label> 
       <input type="text" 
        ref="storename"                      
        className="form-control"                      
        value={this.props.storeName}                      
        placeholder="Store Name"                                           
        onChange={this.handleUserInput}                      
        disabled={this.state.disabled} 
       />         
      </div> 
     </div> 
    ); 
} 

回答

1

更改此:

value={this.props.storeName}                      

此(否則爲輸入的值總是相同的 - 在道具接收到的值):

value={this.state.storeName}                      

和道具複製到構造函數中的狀態(你應該做的是,在構造函數只有當你使用道具作爲初始值):

constructor(props){ 
    super(props) 
    this.state = { 
    storeName: props.storeName 
    } 
} 

handleUserInput=(e)=>{ 
    this.setState({storeName: e.target.value}); 
} 

現在我們已經將輸入框設置爲一個受控元素(初始值取自道具)。如果您對控制組件更感興趣,您可以查看docs,這並不難理解。

+0

這很好,但我的問題是我有一個商店列表的下拉列表。當我選擇商店時,它會顯示特定的商店details.in哪個輸入字段是可編輯的。在這種情況下,第一次選擇工作fyn.When即時嘗試選擇另一家商店的狀態不更新。並在我的控制檯數據是基於選擇工作完美。問題與我的狀態 – sowmyasree

+1

@sowmyasree https://stackoverflow.com/a/32414771/3963067 –

+0

謝謝這麼多,我有今天學習了關於父母道具和孩子狀態的新東西。 – sowmyasree