Sha256: 754724b4d1b3be4a73ebde08421d52e82cf89450a17924ab8bcb0482ff9bd763

Contents?: true

Size: 1.23 KB

Versions: 43

Compression:

Stored size: 1.23 KB

Contents

/**
 * @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) {
      const component = components.get(utils.getParentStatelessComponent());
      if (!component) {
        return;
      }
      if (node.object.type === 'ThisExpression') {
        context.report({
          node: node,
          message: ERROR_MESSAGE
        });
      }
    }
  }))
};

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.21.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.20.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.19.1 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.19.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.18.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.17.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.16.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.15.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.14.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.13.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.12.2 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.12.1 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.12.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.11.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.10.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.9.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.8.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.7.0 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js
govuk_publishing_components-17.6.1 node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js