diff --git a/CHANGELOG.md b/CHANGELOG.md index 06a43334a4..c2dac37f0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel ### Fixed * [`jsx-max-depth`]: Prevent getting stuck in circular references ([#2957][] @AriPerkkio) * [`jsx-no-target-blank`]: fix handling of `warnOnSpreadAttributes` being false ([#2953][] @Nokel81) -* [`forbid-dom-props`]: support `JSXNamespacedName` [#2961][] @mrtnzlml) +* [`forbid-dom-props`]: support `JSXNamespacedName` ([#2961][] @mrtnzlml) +* [`forbid-component-props`]: support `JSXNamespacedName` (@ljharb) ### Changed * Fix CHANGELOG.md ([#2950][] @JounQin) diff --git a/lib/rules/forbid-component-props.js b/lib/rules/forbid-component-props.js index 5aafe099fd..d1f61f4171 100644 --- a/lib/rules/forbid-component-props.js +++ b/lib/rules/forbid-component-props.js @@ -86,7 +86,7 @@ module.exports = { // Extract a component name when using a "namespace", e.g. ``. const tag = parentName.name || `${parentName.object.name}.${parentName.property.name}`; const componentName = parentName.name || parentName.property.name; - if (componentName && componentName[0] !== componentName[0].toUpperCase()) { + if (componentName && typeof componentName[0] === 'string' && componentName[0] !== componentName[0].toUpperCase()) { // This is a DOM node, not a Component, so exit. return; } diff --git a/tests/lib/rules/forbid-component-props.js b/tests/lib/rules/forbid-component-props.js index 5f3ea7a3e5..fd8375a278 100644 --- a/tests/lib/rules/forbid-component-props.js +++ b/tests/lib/rules/forbid-component-props.js @@ -111,6 +111,8 @@ ruleTester.run('forbid-component-props', rule, { options: [{ forbid: [{propName: 'className', allowedFor: ['this.ReactModal']}] }] + }, { + code: '' }], invalid: [{