2017-01-30 42 views
0

我試圖讓輸入了使用ReactJS一個文本框,但我不知道如何獲取文本從文本框反應JS

import React from 'react' 

class component extends React.Component { 
    constructor() { 
      super() 
      this.state = { 
      word: String('') 

    } 
    } 

increment() { 
    this.setState({ 
    word: this.state.word += '' 
}) 
} 

render() { 
    return (
     <div> 
      <p>The message is: { this.state.word } </p> 
      <input type="text" value={this.state.word} onChange={(event) =>this.handleChange(event.target.value)} /> 
      <input type="submit" value="Add Word" onClick={() => this.increment()} /> 
      {/*<p><input type="button" value="clear msg" onClick={() => this.eraseWord()} /></p>*/} 
     </div> 

) 
} 
} 

從文本框中的文本應添加到的消息是:

+2

可能的複製[如何在React中獲取文本框的值?](http://stackoverflow.com/questions/38420396/how-to-get-value-of-textbox-in-react) –

+0

好吧我不知道把handleChange放在哪裏:function(evt){this.setState({textVal:evt.target.value.substr(0,100)}); – jsomers89

+0

'render(){...}'之後。 –

回答

1

需要兩個state變量,一個將存儲textfield當前值,而另一個WIL升存儲完整的價值,裏面increment方法追加textfield值完成值並再次將其設置爲「」,試試這個:

class HelloWidget extends React.Component { 
    constructor() { 
     super(); 
     this.state = { 
      word: '', 
      new: '', 
     }; 
    } 

    increment() { 
     this.setState({ 
      word: this.state.word + this.state.new, 
      new: '', 
     }) 
    } 

    handleChange(value) { 
     this.setState({ 
      new: value 
     }); 
    } 

    render() { 
     return (
      <div> 
       <p>The message is: { this.state.word } </p> 
       <input type="text" value={this.state.new} onChange={(e) =>this.handleChange(e.target.value)} /> 
       <input type="submit" value="Add Word" onClick={() => this.increment()} /> 
      </div> 
     ); 
    } 
} 

檢查jsfiddle的工作比如:https://jsfiddle.net/hse607rr/

+0

不,這是非常感謝 – jsomers89

0

您需要添加handleChange方法:

class component extends React.Component { 
    constructor() { 
     super() 

     this.state = { 
      word: '' 
     }; 
    } 

    increment() { 
     this.setState({ 
      word: this.state.word + '' 
     }) 
    } 

    handleChange(value) { 
     this.setState({ 
      word: value 
     }); 
    } 

    render() { 
     return (
      <div> 
       <p>The message is: { this.state.word } </p> 
       <input type="text" value={this.state.word} onChange={(event) =>this.handleChange(event.target.value)} /> 
       <input type="submit" value="Add Word" onClick={() => this.increment()} /> 
       {/*<p><input type="button" value="clear msg" onClick={() => this.eraseWord()} /></p>*/} 
      </div> 
     ); 
    } 
} 
+0

目前爲止,我希望消息只在用戶單擊添加字按鈕時更新。它應該在點擊按鈕時存儲框中的內容,並允許用戶添加之前輸入的內容 – jsomers89

+0

啊,在這種情況下'handleChange'將值存儲到不同的狀態屬性,然後將其附加到'word '在'增量' – noj