Skip to content

Instantly share code, notes, and snippets.

@jenbennings
Created March 3, 2015 00:09
Show Gist options
  • Save jenbennings/d3b168360999e1694cf6 to your computer and use it in GitHub Desktop.
Save jenbennings/d3b168360999e1694cf6 to your computer and use it in GitHub Desktop.
raw
var React = require('react');
var md5 = require('MD5');
var validateEmail = require('./validateEmail');
var warning = require('react/lib/warning');
var GRAVATAR_URL = "http://gravatar.com/avatar";
var USERS = [
{ id: 1, name: 'Ryan Florence', email: 'rpflorence@gmail.com' },
{ id: 2, name: 'Michael Jackson', email: 'mjijackson@gmail.com' }
];
var emailType = (props, propName, componentName) => {
warning(
validateEmail(props.email),
`Invalid email '${props.email}' sent to 'Gravatar'. Check the render method of '${componentName}'.`
);
};
var Gravatar = React.createClass({
propTypes: {
email: emailType
},
getDefaultProps () {
return {
size: 16
};
},
render () {
var { email, size } = this.props;
var hash = md5(email);
var url = `${GRAVATAR_URL}/${hash}?s=${size*2}`;
return <img src={url} width={size} />;
}
});
var App = React.createClass({
render () {
var users = USERS.map((user) => {
return (
<li key={user.id}>
<Gravatar email={user.email} size={36} /> {user.name}
</li>
);
});
return (
<div>
<h1>Users</h1>
<ul>{users}</ul>
</div>
);
}
});
React.render(<App />, document.body);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment