Skip to content

Instantly share code, notes, and snippets.

@parshap
Last active September 15, 2016 08:56
Show Gist options
  • Save parshap/9418694 to your computer and use it in GitHub Desktop.
Save parshap/9418694 to your computer and use it in GitHub Desktop.
React input validation
/** @jsx React.DOM */
"use strict";
var React = require("react");
// Usage:
// <ValidatedInput validateValue={myValidationFunction}
// onValidationError={handleError}
// valueLink={...} />
module.exports = React.createClass({
getValueLink: function() {
var valueLink = this.props.valueLink;
var requestChange = valueLink.requestChange.bind(valueLink);
var validateValue = this.props.validateValue;
var onValidationError = this.props.onValidationError;
valueLink.requestChange = function(value) {
try {
validateValue(value);
}
catch (err) {
return onValidationError(err, value);
}
requestChange(value);
};
return valueLink;
},
render: function() {
return this.transferPropsTo(
<input valueLink={this.getValueLink()} />
);
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment