@@ -221,6 +221,25 @@ ruleTester.run('no-multi-comp', rule, {
221
221
options : [ {
222
222
ignoreStateless : false
223
223
} ]
224
+ } , {
225
+ code : `
226
+ import React from 'react';
227
+ function memo() {
228
+ var outOfScope = "hello"
229
+ return null;
230
+ }
231
+ class ComponentY extends React.Component {
232
+ memoCities = memo((cities) => cities.map((v) => ({ label: v })));
233
+ render() {
234
+ return (
235
+ <div>
236
+ <div>Counter</div>
237
+ </div>
238
+ );
239
+ }
240
+ }
241
+ ` ,
242
+ parser : parsers . BABEL_ESLINT
224
243
} ] ,
225
244
226
245
invalid : [ {
@@ -376,5 +395,171 @@ ruleTester.run('no-multi-comp', rule, {
376
395
message : 'Declare only one React component per file' ,
377
396
line : 5
378
397
} ]
398
+ } , {
399
+ code : `
400
+ const forwardRef = React.forwardRef;
401
+ const HelloComponent = (0, (props) => {
402
+ return <div></div>;
403
+ });
404
+ const HelloComponent2 = forwardRef((props, ref) => <HelloComponent></HelloComponent>);
405
+ ` ,
406
+ options : [ {
407
+ ignoreStateless : false
408
+ } ] ,
409
+ errors : [ {
410
+ message : 'Declare only one React component per file' ,
411
+ line : 6
412
+ } ]
413
+ } , {
414
+ code : `
415
+ const memo = React.memo;
416
+ const HelloComponent = (props) => {
417
+ return <div></div>;
418
+ };
419
+ const HelloComponent2 = memo((props) => <HelloComponent></HelloComponent>);
420
+ ` ,
421
+ options : [ {
422
+ ignoreStateless : false
423
+ } ] ,
424
+ errors : [ {
425
+ message : 'Declare only one React component per file' ,
426
+ line : 6
427
+ } ]
428
+ } , {
429
+ code : `
430
+ const {forwardRef} = React;
431
+ const HelloComponent = (0, (props) => {
432
+ return <div></div>;
433
+ });
434
+ const HelloComponent2 = forwardRef((props, ref) => <HelloComponent></HelloComponent>);
435
+ ` ,
436
+ options : [ {
437
+ ignoreStateless : false
438
+ } ] ,
439
+ errors : [ {
440
+ message : 'Declare only one React component per file' ,
441
+ line : 6
442
+ } ]
443
+ } , {
444
+ code : `
445
+ const {memo} = React;
446
+ const HelloComponent = (0, (props) => {
447
+ return <div></div>;
448
+ });
449
+ const HelloComponent2 = memo((props) => <HelloComponent></HelloComponent>);
450
+ ` ,
451
+ options : [ {
452
+ ignoreStateless : false
453
+ } ] ,
454
+ errors : [ {
455
+ message : 'Declare only one React component per file' ,
456
+ line : 6
457
+ } ]
458
+ } , {
459
+ code : `
460
+ import React, { memo } from 'react';
461
+ const HelloComponent = (0, (props) => {
462
+ return <div></div>;
463
+ });
464
+ const HelloComponent2 = memo((props) => <HelloComponent></HelloComponent>);
465
+ ` ,
466
+ options : [ {
467
+ ignoreStateless : false
468
+ } ] ,
469
+ errors : [ {
470
+ message : 'Declare only one React component per file' ,
471
+ line : 6
472
+ } ]
473
+ } , {
474
+ code : `
475
+ import {forwardRef} from 'react';
476
+ const HelloComponent = (0, (props) => {
477
+ return <div></div>;
478
+ });
479
+ const HelloComponent2 = forwardRef((props, ref) => <HelloComponent></HelloComponent>);
480
+ ` ,
481
+ options : [ {
482
+ ignoreStateless : false
483
+ } ] ,
484
+ errors : [ {
485
+ message : 'Declare only one React component per file' ,
486
+ line : 6
487
+ } ]
488
+ } , {
489
+ code : `
490
+ const { memo } = require('react');
491
+ const HelloComponent = (0, (props) => {
492
+ return <div></div>;
493
+ });
494
+ const HelloComponent2 = memo((props) => <HelloComponent></HelloComponent>);
495
+ ` ,
496
+ options : [ {
497
+ ignoreStateless : false
498
+ } ] ,
499
+ errors : [ {
500
+ message : 'Declare only one React component per file' ,
501
+ line : 6
502
+ } ]
503
+ } , {
504
+ code : `
505
+ const {forwardRef} = require('react');
506
+ const HelloComponent = (0, (props) => {
507
+ return <div></div>;
508
+ });
509
+ const HelloComponent2 = forwardRef((props, ref) => <HelloComponent></HelloComponent>);
510
+ ` ,
511
+ options : [ {
512
+ ignoreStateless : false
513
+ } ] ,
514
+ errors : [ {
515
+ message : 'Declare only one React component per file' ,
516
+ line : 6
517
+ } ]
518
+ } , {
519
+ code : `
520
+ const forwardRef = require('react').forwardRef;
521
+ const HelloComponent = (0, (props) => {
522
+ return <div></div>;
523
+ });
524
+ const HelloComponent2 = forwardRef((props, ref) => <HelloComponent></HelloComponent>);
525
+ ` ,
526
+ options : [ {
527
+ ignoreStateless : false
528
+ } ] ,
529
+ errors : [ {
530
+ message : 'Declare only one React component per file' ,
531
+ line : 6
532
+ } ]
533
+ } , {
534
+ code : `
535
+ const memo = require('react').memo;
536
+ const HelloComponent = (0, (props) => {
537
+ return <div></div>;
538
+ });
539
+ const HelloComponent2 = memo((props) => <HelloComponent></HelloComponent>);
540
+ ` ,
541
+ options : [ {
542
+ ignoreStateless : false
543
+ } ] ,
544
+ errors : [ {
545
+ message : 'Declare only one React component per file' ,
546
+ line : 6
547
+ } ]
548
+ } , {
549
+ code : `
550
+ import Foo, { memo, forwardRef } from 'foo';
551
+ const Text = forwardRef(({ text }, ref) => {
552
+ return <div ref={ref}>{text}</div>;
553
+ })
554
+ const Label = memo(() => <Text />);
555
+ ` ,
556
+ settings : {
557
+ react : {
558
+ pragma : 'Foo'
559
+ }
560
+ } ,
561
+ errors : [ {
562
+ message : 'Declare only one React component per file'
563
+ } ]
379
564
} ]
380
565
} ) ;
0 commit comments