You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							45 lines
						
					
					
						
							1.3 KiB
						
					
					
				| /** | |
|  * @fileoverview Report "this" being used in stateless functional components. | |
|  */ | |
| 
 | |
| 'use strict'; | |
| 
 | |
| const Components = require('../util/Components'); | |
| const docsUrl = require('../util/docsUrl'); | |
| 
 | |
| // ------------------------------------------------------------------------------ | |
| // Constants | |
| // ------------------------------------------------------------------------------ | |
|  | |
| const ERROR_MESSAGE = 'Stateless functional components should not use this'; | |
| 
 | |
| // ------------------------------------------------------------------------------ | |
| // Rule Definition | |
| // ------------------------------------------------------------------------------ | |
|  | |
| module.exports = { | |
|   meta: { | |
|     docs: { | |
|       description: 'Report "this" being used in stateless components', | |
|       category: 'Possible Errors', | |
|       recommended: false, | |
|       url: docsUrl('no-this-in-sfc') | |
|     }, | |
|     schema: [] | |
|   }, | |
| 
 | |
|   create: Components.detect((context, components, utils) => ({ | |
|     MemberExpression(node) { | |
|       if (node.object.type === 'ThisExpression') { | |
|         const component = components.get(utils.getParentStatelessComponent()); | |
|         if (!component || component.node && component.node.parent && component.node.parent.type === 'Property') { | |
|           return; | |
|         } | |
|         context.report({ | |
|           node, | |
|           message: ERROR_MESSAGE | |
|         }); | |
|       } | |
|     } | |
|   })) | |
| };
 | |
| 
 |