2016-07-01 19 views
3

Ich versuche, ein einfaches Formular in Material-Ui mit Login und Passwort TextFields und einem RaisedButton, um das Formular zu senden. Was ist der beste Weg, um Ereignisse auf dem RaisedButton zu behandeln und das Formular zu senden?Formular mit Material-Ui

Antwort

3

Ihre beste Wette ist es, über die Verwendung von Formularen mit reagieren zu lernen, dann konvertieren Sie zu Material, sobald Sie diesen Teil haben.

ist hier ein gutes Tutorial von reagieren, dass enthält ein Formular abgeschickt:

https://facebook.github.io/react/docs/tutorial.html

Relevante Code: Funktion

Rendern - Notieren Sie sich die Event-Handler auf dem Formular

render: function() { 
return (
    <form className="commentForm" onSubmit={this.handleSubmit}> 
    <input 
     type="text" 
     placeholder="Your name" 
     value={this.state.author} 
     onChange={this.handleAuthorChange} 
    /> 
    <input 
     type="text" 
     placeholder="Say something..." 
     value={this.state.text} 
     onChange={this.handleTextChange} 
    /> 
    <input type="submit" value="Post" /> 
    </form> 
); 

Und hier ist die Implementierung des Rückrufs

handleSubmit: function(e) { 
e.preventDefault(); 
var author = this.state.author.trim(); 
var text = this.state.text.trim(); 
if (!text || !author) { 
    return; 
} 
// TODO: send request to the server 
this.setState({author: '', text: ''}); 

},

Sie diese Probe durch Umwandlung der Eingabeelemente zu TextField-

über Material-ui umwandeln kann die coolen Features davon

http://www.material-ui.com/#/components/text-field

und verwenden.

Alle Details, wie dies funktioniert im Tutorial

Hoffnung abgedeckt sind, das hilft - viel Glück!

+2

denke ich, was das vermisst ist, dass Sie nicht nur umwandeln kann ein '' zu einem 'TextField' oder' RaisedButton'. Die Material-UI-Komponenten haben eine andere API (ich bin immer noch auf der Suche nach der genauen Antwort) – Patrick

+1

Hey Patrick, ich könnte dies zu Material -ui umwandeln und es hochladen, wenn Sie noch suchen, LMK. –

+3

Ich bin nicht der Fragesteller, also konnte ich Ihre Antwort nicht wählen, aber Sie haben Recht, dass Sie '' ausführen können und diese Prop wird durch den nativen '' gehen und funktionieren ordnungsgemäß, um ein Formular zu senden. Ich habe jetzt genau das, was in meinem Code funktioniert. In Bezug auf die tatsächliche Beantwortung der Frage, denke ich, wäre eine Material-UI-Version der Antwort wahrscheinlich technisch korrekter. – Patrick

2

Das Ereignis, das Sie suchen, ist onTouchTap und erfordert die Installation der react-tap-event-plugin. Die Anweisungen hierzu finden Sie oben auf der Seite unter here.

<RaisedButton label="Default" style={style} onTouchTap={yourEventHandler} /> 

Hoffe, das hilft.

1

Fügen Sie type="submit" zu einem Material-UI-Schaltflächenelement hinzu, z. B. RaisedButton, und es funktioniert als Absenden-Schaltfläche, wenn Sie darauf klicken. Wenn das Formular abgeschickt wird, löst es das onSubmit auf dem Formular aus und das handleSubmit Callback wird ausgeführt.

class MyForm extends React.Component { 
    constructor() { 
    super(); 
    this.state = {id: null}; 
    } 
    handleChange = (event) => { 
    this.setState({id: event.target.value}); 
    } 
    handleSubmit = (event) => { 
    //Make a network call somewhere 
    event.preventDefault(); 
    } 
    render() { 
    return( 
     <form onSubmit={this.handleSubmit}> 
      <TextField floatingLabelText="ID Number" onChange={this.change} />  
      <RaisedButton label="Submit" type="submit" /> 
     </form> 
    ) 
    } 
}