Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var PreferEs6ClassRule = rule.Rule{ Name: "react/prefer-es6-class", Run: func(ctx rule.RuleContext, options any) rule.RuleListeners { mode := parseMode(options) pragma := reactutil.GetReactPragma(ctx.Settings) createClass := reactutil.GetReactCreateClass(ctx.Settings) listeners := rule.RuleListeners{} if mode == "always" { listeners[ast.KindObjectLiteralExpression] = func(node *ast.Node) { parent := skipParenParent(node) if parent == nil { return } // ESLint's `isES5Component` gate is `node.parent.callee` — // any parent node kind that exposes a `.callee` property. // In ESTree that is both CallExpression AND NewExpression, // so `new createReactClass({...})` also reports. var callee *ast.Node var arguments *ast.NodeList switch parent.Kind { case ast.KindCallExpression: call := parent.AsCallExpression() callee = call.Expression arguments = call.Arguments case ast.KindNewExpression: newExpr := parent.AsNewExpression() callee = newExpr.Expression arguments = newExpr.Arguments default: return } if !isCreateClassCallee(callee, pragma, createClass) { return } if !containsArg(arguments, node) { return } ctx.ReportNode(node, rule.RuleMessage{ Id: "shouldUseES6Class", Description: "Component should use es6 class instead of createClass", }) } } if mode == "never" { listeners[ast.KindClassDeclaration] = func(node *ast.Node) { if !reactutil.ExtendsReactComponent(node, pragma) { return } classStart := classKeywordStart(ctx.SourceFile.Text(), node) ctx.ReportRange(core.NewTextRange(classStart, node.End()), rule.RuleMessage{ Id: "shouldUseCreateClass", Description: "Component should use createClass instead of es6 class", }) } } return listeners }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.