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: [{