Skip to content

Commit e4e27e8

Browse files
denisbalykoyarastqt
authored andcommitted
fix(eslint-plugin): case for destructuring
1 parent 94e8cf2 commit e4e27e8

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

packages/eslint-plugin/lib/rules/no-classname-runtime.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ module.exports = {
2525
)
2626
return false
2727

28+
// Exception for props.x or state.x (case for destructuring)
29+
if (
30+
arg.object.type === 'Identifier' &&
31+
(arg.object.name === 'props' || arg.object.name === 'state')
32+
)
33+
return false
34+
2835
return canOptimize(arg.object) && canOptimize(arg.property)
2936
case 'Property':
3037
return canOptimize(arg.key) && canOptimize(arg.value)

packages/eslint-plugin/tests/lib/rules/no-classname-runtime.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ ruleTester.run('no-classname-runtime', rule, {
2323
'<Block className={isVisible ? "Visible" : Hidden}/>',
2424
'<Block className={cnTest(this.props.className)}/>',
2525
'<Block className={cnTest(undefined, [this.props.className])}/>',
26+
'<Block className={cnTest({ [props.type]: true })}/>',
27+
'<Block className={cnTest({ [props.type]: a.b.c.d })}/>',
2628
].map((code) => ({
2729
code,
2830
})),
@@ -32,8 +34,6 @@ ruleTester.run('no-classname-runtime', rule, {
3234
'<Block className={cnTest("Test")}/>',
3335
'<Block className={cnTest("Test", "TestElem")}/>',
3436
'<Block className={cnTest({ theme })}/>',
35-
'<Block className={cnTest({ [props.type]: true })}/>',
36-
'<Block className={cnTest({ [props.type]: a.b.c.d })}/>',
3737
'<Block className={cnTest({ theme, colored })}/>',
3838
'<Block className={cnTest("Test", { theme })}/>',
3939
'<Block className={cnTest("Test", { params }, [mixClassName])}/>',

0 commit comments

Comments
 (0)