2016-07-17 180 views
10

Ho appena iniziato a utilizzare React.js, e io non sono solo sicuro se c'è un modo speciale per ottenere il valore di una casella di testo, restituito in un componente come questo:Come ottenere il valore della casella di testo in 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) }); 
    } 
}); 

risposta

11

Come descritto nella documentation è necessario utilizzare ingresso controllato. Per fare un ingresso - controllato è necessario specificare due puntelli su di esso

  1. onChange - funzione che fisserebbe componente state ad un ingresso value ogni volta che l'ingresso viene cambiato
  2. value - valore di ingresso dalla componente state (this.state.value nell'esempio)

esame pio:

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} 
     /> 
    ); 
    } 

Più in particolare su textarea - here

+0

Quindi come utilizzerei quanto sopra per ottenere il valore corrente della casella di testo? – think123

+0

Sostituendo l'elemento 'input' su' textarea' –

3

solo aggiornare il tuo contributo all'imperdibile il valore

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) }); 
    } 
}); 

il valore di immissione del testo è sempre nello stato e si può ottenere lo stesso da this.state.textVal

+0

La prego di fornire uno scenario di caso d'uso per quanto sopra? – think123

+0

Se vuoi precompilare il textinput dal server, allora hai bisogno di un campo nello stato –

+0

Sto provando ad accedere al valore dall'esterno 'LoginUsername' - adesso sto provando ad usare' LoginUsername.state.textVal ', ma non sta funzionando per me ... – think123