react-jsonschema-form demo
https://github.com/mozilla-services/react-jsonschema-form
by epicfaace
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js"></script>
<script src="https://unpkg.com/react-jsonschema-form/dist/react-jsonschema-form.js"></script>
<div class="container">
<div id="main"></div>
</div>
Babel + JSX
class Form extends React.Component {
constructor(props) {
super(props);
this.state = {firstname: '', lastname: '', email: ''};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event, name) {
this.setState({[name]: event.target.value});
}
handleSubmit(event) {
alert('A name was submitted: ' + this.state.value);
event.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}>
First Name:
<input type="text" label="firstname" value={this.state.firstname} onChange={e => this.handleChange(e, "firstname")} /><br />
Last Name:
<input type="text" label="lastname" value={this.state.lastname} onChange={e => this.handleChange(e, "lastname")} /><br />
Email:
<input type="text" name="email" value={this.state.email} onChange={e => this.handleChange(e, "email")} />
<input type="submit" value="Submit" />
</form>
);
}
}
ReactDOM.render(<Form />,
document.getElementById("main"));