2016-07-17 4 views
10

Właśnie zaczął używać React.js, a ja po prostu nie jestem pewien, czy istnieje specjalny sposób, aby uzyskać wartość pola tekstowego, powrócił w komponencie jak ten:Jak uzyskać wartość pola tekstowego w React?

var LoginUsername = React.createClass({ 
    render: function() { 
    return (
     <input type="text" autofocus="autofocus" onChange={this.handleChange} /> 
    ) 
    }, 
    handleChange: function (evt) { 
    this.setState({ value: evt.target.value.substr(0, 100) }); 
    } 
}); 

Odpowiedz

11

Jak opisano w documentation trzeba użyć kontrolowane wejście. Aby wejście - kontrolowanej trzeba określić dwa rekwizyty na nim

  1. onChange - funkcja, która będzie ustawiona składnik state do wejścia value każdego wejścia czas jest zmieniany
  2. value - wartość wejściową od komponentu state (this.state.value w przykładzie)

egzamin ple:

getInitialState: function() { 
    return {value: 'Hello!'}; 
    }, 
    handleChange: function(event) { 
    this.setState({value: event.target.value}); 
    }, 
    render: function() { 
    return (
     <input 
     type="text" 
     value={this.state.value} 
     onChange={this.handleChange} 
     /> 
    ); 
    } 

Dokładniej o textarea - here

+0

Więc w jaki sposób użyć powyższego, aby uzyskać aktualną wartość textbox? – think123

+0

Poprzez zamianę elementu 'input' na' textarea' –

3

tylko wejście do aktualizacji wartość

var LoginUsername = React.createClass({ 
    getInitialState:function(){ 
    return { 
     textVal:'' 
    } 
}, 
    render: function() { 
    return (
     <input type="text" value={this.state.textVal} autofocus="autofocus" onChange={this.handleChange} /> 
    ) 
    }, 
    handleChange: function (evt) { 
    this.setState({ textVal: evt.target.value.substr(0, 100) }); 
    } 
}); 

Twoja wartość wprowadzania tekstu jest zawsze w stanie i można dostać to samo przez this.state.textVal

+0

mógłbyś dostarczyć scenariusz przypadków użycia dla powyższych? – think123

+0

Jeśli chcesz uzupełnić wartość textinput z serwera, musisz podać pole w stanie –

+0

Próbuję uzyskać dostęp do wartości z zewnątrz 'LoginUsername' - teraz próbuję użyć' LoginUsername.state.textVal ', ale to nie działa dla mnie ... – think123