/
drndsv
/
react
Обзор
Документация
Войти
/
drndsv
/
react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/eslint-plugin-react/lib/rules/state-in-constructor.js
67 строк
2 KB
drndsv
Initial commit
14 апр 2025, 22:53
14 апр 2025, 22:53
641ac8a
Код
Авторство
О чём код?
/** * @fileoverview Enforce the state initialization style to be either in a constructor or with a class property * @author Kanitkorn Sujautra */ 'use strict'; const astUtil = require('../util/ast'); const componentUtil = require('../util/componentUtil'); const docsUrl = require('../util/docsUrl'); const report = require('../util/report'); // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ const messages = { stateInitConstructor: 'State initialization should be in a constructor', stateInitClassProp: 'State initialization should be in a class property', }; module.exports = { meta: { docs: { description: 'Enforce class component state initialization style', category: 'Stylistic Issues', recommended: false, url: docsUrl('state-in-constructor'), }, messages, schema: [{ enum: ['always', 'never'], }], }, create(context) { const option = context.options[0] || 'always'; return { 'ClassProperty, PropertyDefinition'(node) { if ( option === 'always' && !node.static && node.key.name === 'state' && componentUtil.getParentES6Component(context) ) { report(context, messages.stateInitConstructor, 'stateInitConstructor', { node, }); } }, AssignmentExpression(node) { if ( option === 'never' && componentUtil.isStateMemberExpression(node.left) && astUtil.inConstructor(context) && componentUtil.getParentES6Component(context) ) { report(context, messages.stateInitClassProp, 'stateInitClassProp', { node, }); } }, }; }, };