From 1eff8c3a8edb7ccbbd0109f9598a50bee9354d2f Mon Sep 17 00:00:00 2001 From: Federico Zivolo Date: Thu, 20 Apr 2017 20:59:41 +0200 Subject: [PATCH] fix: Make `styles` property always not enumerable (#231) fixes #217 --- package.json | 2 +- src/extendReactClass.js | 23 ++++++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 6faad43..0c9501f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "css", "modules" ], - "version": "4.0.3", + "version": "4.0.4", "author": { "name": "Gajus Kuizinas", "email": "gajus@gajus.com", diff --git a/src/extendReactClass.js b/src/extendReactClass.js index 33858bd..6eba084 100644 --- a/src/extendReactClass.js +++ b/src/extendReactClass.js @@ -15,37 +15,34 @@ import renderNothing from './renderNothing'; export default (Component: Object, defaultStyles: Object, options: Object) => { const WrappedComponent = class extends Component { render () { - let propsChanged; let styles; - propsChanged = false; + const hasDefaultstyles = _.isObject(defaultStyles); - if (this.props.styles) { - styles = this.props.styles; - } else if (_.isObject(defaultStyles)) { + if (this.props.styles || hasDefaultstyles) { const props = Object.assign({}, this.props); + if (this.props.styles) { + styles = this.props.styles; + } else if (hasDefaultstyles) { + styles = defaultStyles; + delete this.props.styles; + } + Object.defineProperty(props, 'styles', { configurable: true, enumerable: false, - value: defaultStyles, + value: styles, writable: false }); this.props = props; - - propsChanged = true; - styles = defaultStyles; } else { styles = {}; } const renderResult = super.render(); - if (propsChanged) { - delete this.props.styles; - } - if (renderResult) { return linkClass(renderResult, styles, options); }