2017-03-10 4 views
3

Ich habe versucht, Eingaben von einem input Feld zu nehmen und ich benutzen refs (die übliche Art und Weise in react), aber es scheint nicht zu funktionieren. Die input ich bekomme ist undefined. Dies ist mein Code:Wie zu nehmen Eingaben von <Input/> in semantische UI reagieren

sendMessage =() => { 
    console.log(this.inputtext.value); 
} 

render(){ 
    return(
     <div> 
     <Input ref={input => this.inputtext = input;} placeholder='message'/> 
     <Button onClick={this.sendMessage}>Send</Button> 
     </div> 
    ); 
} 

ich die Eingänge von den click event der Taste nehmen müssen. Ich kann nicht herausfinden, was falsch ist. Wie kann ich den input Wert richtig erhalten?

Antwort

2

Da Sie den arrow Operator verwendet haben, this.inputtext.value wird nicht funktionieren, Sie schreiben müssen:

sendMessage(){ 
    console.log(this.inputtext.value); 
} 

In diesem Fall semantisch-ui der Input Komponente a div oben auf input gewickelt ist. Sie können also nicht direkt über ref auf Eingabeelement zugreifen. Sie sollten die bevorzugte Art und Weise des reagieren, um den Wert zu erhalten, die

<Input onChange={this.handleMessage.bind(this)} placeholder='message'/> 

und

handleMessage (e) { console.log(e.target.value); /* store value here. */ } 
2

Sie benötigen eine normale Klassenmethode für diesen Einsatz zu arbeiten. Sie sollten auch kein Semikolon in der Referenz haben.

sendMessage() { 
    console.log(this.inputtext.value); 
    } 

    render(){ 
    return(
     <div> 
     <Input ref={input => this.inputtext = input} placeholder='message'/> 
     <Button onClick={this.sendMessage}>Send</Button> 
     </div> 
    ); 
    } 
+0

noch im immer es als undefiniert –

+0

Wie @Vikramaditya sagte, es ist darauf zurückzuführen, 'Input' den Referee nicht vorbei prop zu dem 'input'-Tag, das generiert wird. Versuchen Sie es einfach mit einem einfachen "Eingabe" -Tag. – spirift

4

In Ihrem Fall können Sie auch den Eingangswert durch diesen Code erhalten:

this.inputtext.inputRef.value 
Verwandte Themen