diff --git a/lib/util/Components.js b/lib/util/Components.js index c4913c2978..b337656e32 100644 --- a/lib/util/Components.js +++ b/lib/util/Components.js @@ -699,8 +699,10 @@ function componentRule(rule, context) { const updatedRuleInstructions = util._extend({}, ruleInstructions); const propTypesInstructions = propTypes(context, components, utils); const defaultPropsInstructions = defaultProps(context, components, utils); - const allKeys = new Set(Object.keys(detectionInstructions).concat(Object.keys(propTypesInstructions)) - .concat(Object.keys(defaultPropsInstructions))); + const allKeys = new Set(Object.keys(detectionInstructions).concat( + Object.keys(propTypesInstructions), + Object.keys(defaultPropsInstructions) + )); allKeys.forEach(instruction => { updatedRuleInstructions[instruction] = function(node) { if (instruction in detectionInstructions) { diff --git a/lib/util/defaultProps.js b/lib/util/defaultProps.js index 8546c5e654..32b0aec051 100644 --- a/lib/util/defaultProps.js +++ b/lib/util/defaultProps.js @@ -3,6 +3,7 @@ */ 'use strict'; +const fromEntries = require('object.fromentries'); const astUtil = require('./ast'); const propsUtil = require('./props'); const variableUtil = require('./variable'); @@ -85,10 +86,11 @@ module.exports = function defaultPropsInstructions(context, components, utils) { } const defaults = component.defaultProps || {}; - const newDefaultProps = defaultProps.reduce((acc, prop) => { - acc[prop.name] = prop; - return acc; - }, Object.assign({}, defaults)); + const newDefaultProps = Object.assign( + {}, + defaults, + fromEntries(defaultProps.map(prop => [prop.name, prop])) + ); components.set(component.node, { defaultProps: newDefaultProps diff --git a/package.json b/package.json index 8fb035558b..0337c577e4 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "doctrine": "^2.1.0", "has": "^1.0.3", "jsx-ast-utils": "^2.0.1", + "object.fromentries": "^2.0.0", "prop-types": "^15.6.2" }, "devDependencies": {