diff --git a/lib/rules/forbid-component-props.js b/lib/rules/forbid-component-props.js
index e5d8185961..2756b1a336 100644
--- a/lib/rules/forbid-component-props.js
+++ b/lib/rules/forbid-component-props.js
@@ -78,7 +78,11 @@ module.exports = {
return {
JSXAttribute(node) {
- const tag = node.parent.name.name;
+ let tag = node.parent.name.name;
+ if (!tag && node.parent.name.object.name !== 'this') {
+ // Extract a component name when using a "namespace", e.g. ``.
+ tag = `${node.parent.name.object.name}.${node.parent.name.property.name}`;
+ }
if (tag && tag[0] !== tag[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 910d2c240f..7e05cdbfa2 100644
--- a/tests/lib/rules/forbid-component-props.js
+++ b/tests/lib/rules/forbid-component-props.js
@@ -104,6 +104,11 @@ ruleTester.run('forbid-component-props', rule, {
options: [{
forbid: [{propName: 'className', allowedFor: ['ReactModal']}]
}]
+ }, {
+ code: 'const item = ();',
+ options: [{
+ forbid: [{propName: 'className', allowedFor: ['AntdLayout.Content']}]
+ }]
}],
invalid: [{