'use strict';
const ENTER_KEY = 13;
const emailFactory = function ({
React,
setEmail,
setEditMode
} = {}) {
const EmailField = function (props) {
return {
propTypes: {
email: React.PropTypes.string,
isEditMode: React.PropTypes.bool
},
props,
onKeyUp (e) {
if (e.keyCode !== ENTER_KEY) return;
setEmail(e.target.value);
},
render () {
const isEditMode = this.props.isEditMode;
const email = this.props.email;
const displayStyle = {
display: isEditMode ? 'none' : 'block'
};
const editStyle = {
display: isEditMode ? 'block' : 'none'
};
return (
<div>
<p
onClick={ () => setEditMode(true) }
style = { displayStyle }
>{ email }
</p>
<input
type="email"
onKeyUp={ this.onKeyUp }
style = { editStyle }
placeholder = { email } />
</div>
);
}
};
};
return EmailField;
};
export default emailFactory;
Last active
January 8, 2025 09:50
-
-
Save ericelliott/7e05747b891673eb704b to your computer and use it in GitHub Desktop.
React - Complete Reusable Component
@ericelliott what "setEmail"and "setEditMode" would look like?
@ericelliott I assume your intention is to use prototypal inheritance to inherit from React.Component (I've seen you make references to this elsewhere). Where does this actually happen?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
React Reusable Component Standalone
On the suggestion of @gaearon, this implementation drops the factory in favor of passing actions in with props. This has the advantage of allowing you to validate your actions with propTypes: