Skip to content

Commit 66167d5

Browse files
committed
Added check for template literals in no-string-refs rule
1 parent bc976b8 commit 66167d5

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

docs/rules/no-string-refs.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,22 @@ var Hello = createReactClass({
2626
});
2727
```
2828

29+
```jsx
30+
var Hello = createReactClass({
31+
render: function() {
32+
return <div ref={`hello`}>Hello, world.</div>;
33+
}
34+
});
35+
```
36+
37+
```jsx
38+
var Hello = createReactClass({
39+
render: function() {
40+
return <div ref={`hello${index}`}>Hello, world.</div>;
41+
}
42+
});
43+
```
44+
2945
The following patterns are **not** considered warnings:
3046

3147
```jsx

lib/rules/no-string-refs.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ module.exports = {
7575
node.value &&
7676
node.value.type === 'JSXExpressionContainer' &&
7777
node.value.expression &&
78-
node.value.expression.type === 'Literal' &&
79-
typeof node.value.expression.value === 'string'
78+
((node.value.expression.type === 'Literal' && typeof node.value.expression.value === 'string') ||
79+
node.value.expression.type === 'TemplateLiteral')
8080
);
8181
}
8282

tests/lib/rules/no-string-refs.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,41 @@ ruleTester.run('no-refs', rule, {
9797
}, {
9898
message: 'Using string literals in ref attributes is deprecated.'
9999
}]
100+
},
101+
{
102+
code: [
103+
'var Hello = createReactClass({',
104+
' componentDidMount: function() {',
105+
' var component = this.refs.hello;',
106+
' },',
107+
' render: function() {',
108+
' return <div ref={`hello`}>Hello {this.props.name}</div>;',
109+
' }',
110+
'});'
111+
].join('\n'),
112+
parser: 'babel-eslint',
113+
errors: [{
114+
message: 'Using this.refs is deprecated.'
115+
}, {
116+
message: 'Using string literals in ref attributes is deprecated.'
117+
}]
118+
},
119+
{
120+
code: [
121+
'var Hello = createReactClass({',
122+
' componentDidMount: function() {',
123+
' var component = this.refs.hello;',
124+
' },',
125+
' render: function() {',
126+
' return <div ref={`hello${index}`}>Hello {this.props.name}</div>;',
127+
' }',
128+
'});'
129+
].join('\n'),
130+
parser: 'babel-eslint',
131+
errors: [{
132+
message: 'Using this.refs is deprecated.'
133+
}, {
134+
message: 'Using string literals in ref attributes is deprecated.'
135+
}]
100136
}]
101137
});

0 commit comments

Comments
 (0)