123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /**
- * @fileoverview Enforce no single element style arrays
- * @author Michael Gall
- */
- 'use strict';
- module.exports = {
- meta: {
- docs: {
- description:
- 'Disallow single element style arrays. These cause unnecessary re-renders as the identity of the array always changes',
- category: 'Stylistic Issues',
- recommended: false,
- url: '',
- },
- fixable: 'code',
- },
- create(context) {
- function reportNode(JSXExpressionNode) {
- context.report({
- node: JSXExpressionNode,
- message:
- 'Single element style arrays are not necessary and cause unnecessary re-renders',
- fix(fixer) {
- const realStyleNode = JSXExpressionNode.value.expression.elements[0];
- const styleSource = context.getSourceCode().getText(realStyleNode);
- return fixer.replaceText(JSXExpressionNode.value.expression, styleSource);
- },
- });
- }
- // --------------------------------------------------------------------------
- // Public
- // --------------------------------------------------------------------------
- return {
- JSXAttribute(node) {
- if (node.name.name !== 'style') return;
- if (!node.value.expression) return;
- if (node.value.expression.type !== 'ArrayExpression') return;
- if (node.value.expression.elements.length === 1) {
- reportNode(node);
- }
- },
- };
- },
- };
|