Skip to content

eslint-plugin-react

INFO

이 문서는 ChatGPT 5.5를 통해 작성되었습니다.

기준일: 2026-04-29
기준 버전: eslint-plugin-react@7.37.5
출처: npm eslint-plugin-react, 패키지 배포본의 rules 메타데이터

규칙 목록

규칙설명
boolean-prop-namingboolean prop 이름이 일관된 패턴을 따르도록 강제합니다.
button-has-typebutton 요소에 명시적인 type 속성을 요구합니다.
checked-requires-onchange-or-readonlychecked를 쓰는 입력 요소에 onChange 또는 readOnly를 요구합니다.
default-props-match-prop-typesdefaultProps가 필수가 아닌 propTypes와 대응되도록 검사합니다.
destructuring-assignmentprops, state, context 접근 방식에 구조 분해 사용 여부를 일관되게 강제합니다.
display-nameReact 컴포넌트 정의에 displayName 누락을 금지합니다.
forbid-component-props컴포넌트에 지정한 prop 사용을 금지합니다.
forbid-dom-propsDOM 노드에 지정한 prop 사용을 금지합니다.
forbid-elements지정한 JSX 요소 사용을 금지합니다.
forbid-foreign-prop-types다른 컴포넌트의 propTypes를 직접 참조하는 패턴을 금지합니다.
forbid-prop-typesany, array, object처럼 너무 넓은 prop type 사용을 제한합니다.
forward-ref-uses-refforwardRef 컴포넌트가 ref 매개변수를 포함하도록 요구합니다.
function-component-definition함수 컴포넌트를 선언문, 함수 표현식, 화살표 함수 중 지정한 형태로 작성하도록 강제합니다.
hook-use-stateuseState 반환값을 구조 분해하고 값/setter 이름이 대칭을 이루도록 검사합니다.
iframe-missing-sandboxiframe 요소에 sandbox 속성을 요구합니다.
jsx-boolean-valueJSX boolean 속성 표기 방식을 일관되게 강제합니다.
jsx-child-element-spacingJSX 자식 요소 사이의 공백 사용을 검사합니다.
jsx-closing-bracket-locationJSX 닫는 꺾쇠괄호 위치를 일관되게 강제합니다.
jsx-closing-tag-location여러 줄 JSX의 닫는 태그 위치를 일관되게 강제합니다.
jsx-curly-brace-presenceJSX에서 불필요한 중괄호 표현식을 금지하거나 리터럴에 중괄호 사용을 강제합니다.
jsx-curly-newlineJSX 중괄호 안 줄바꿈 스타일을 일관되게 강제합니다.
jsx-curly-spacingJSX 중괄호 안 공백 스타일을 일관되게 강제합니다.
jsx-equals-spacingJSX 속성의 = 주변 공백 스타일을 강제합니다.
jsx-filename-extensionJSX를 포함할 수 있는 파일 확장자를 제한합니다.
jsx-first-prop-new-lineJSX 첫 번째 prop의 줄 위치를 일관되게 강제합니다.
jsx-fragmentsFragment를 축약 문법(<>) 또는 명시 문법(React.Fragment)으로 일관되게 쓰도록 합니다.
jsx-handler-namesJSX 이벤트 핸들러 prop과 함수 이름 규칙을 강제합니다.
jsx-indentJSX 들여쓰기를 강제합니다.
jsx-indent-propsJSX prop 들여쓰기를 강제합니다.
jsx-key반복 렌더링되는 JSX 요소에 key prop 누락을 금지합니다.
jsx-max-depthJSX 중첩 깊이의 최대값을 제한합니다.
jsx-max-props-per-lineJSX 한 줄에 허용할 prop 개수를 제한합니다.
jsx-newlineJSX 요소와 표현식 뒤 줄바꿈 사용 여부를 강제합니다.
jsx-no-bindJSX prop에서 .bind()나 인라인 화살표 함수를 쓰는 패턴을 금지합니다.
jsx-no-comment-textnodesJSX 주석이 텍스트 노드로 들어가는 실수를 방지합니다.
jsx-no-constructed-context-valuesContext Provider의 value에 매 렌더마다 새 객체/함수를 넣어 불필요한 리렌더를 유발하는 패턴을 금지합니다.
jsx-no-duplicate-propsJSX에서 같은 prop을 중복 선언하지 못하게 합니다.
jsx-no-leaked-render조건부 렌더링에서 의도치 않은 값이 화면에 새는 패턴을 방지합니다.
jsx-no-literalsJSX 안의 문자열 리터럴 사용을 금지합니다.
jsx-no-script-urlJSX에서 javascript: URL 사용을 금지합니다.
jsx-no-target-blanktarget="_blank" 사용 시 안전한 rel 값을 요구합니다.
jsx-no-undefJSX에서 선언되지 않은 컴포넌트나 변수를 사용하는 것을 금지합니다.
jsx-no-useless-fragment불필요한 Fragment 사용을 금지합니다.
jsx-one-expression-per-lineJSX 표현식을 한 줄에 하나씩 배치하도록 강제합니다.
jsx-pascal-case사용자 정의 JSX 컴포넌트 이름에 PascalCase를 강제합니다.
jsx-props-no-multi-spaces인라인 JSX prop 사이의 중복 공백을 금지합니다.
jsx-props-no-spread-multi같은 식별자를 JSX spread prop으로 여러 번 펼치는 것을 금지합니다.
jsx-props-no-spreadingJSX prop spreading 사용을 금지합니다.
jsx-sort-propsJSX prop을 알파벳순 등 지정한 순서로 정렬하도록 강제합니다.
jsx-tag-spacingJSX 태그의 여는/닫는 괄호 주변 공백을 강제합니다.
jsx-uses-reactJSX 사용으로 인해 React import가 실제 사용된 것으로 인식되게 합니다.
jsx-uses-varsJSX에서 사용한 변수가 미사용 변수로 잘못 보고되지 않게 합니다.
jsx-wrap-multilines여러 줄 JSX를 괄호로 감싸도록 강제합니다.
no-access-state-in-setstatesetState 내부에서 this.state를 직접 읽는 패턴을 금지합니다.
no-adjacent-inline-elements공백 없이 인접한 inline 요소를 금지합니다.
no-array-index-key배열 인덱스를 key로 사용하는 것을 금지합니다.
no-arrow-function-lifecycle라이프사이클 메서드를 클래스 필드 화살표 함수가 아니라 prototype 메서드로 작성하도록 합니다.
no-children-propchildren을 prop으로 직접 전달하는 것을 금지합니다.
no-dangerdangerouslySetInnerHTML 사용을 금지합니다.
no-danger-with-childrenchildrendangerouslySetInnerHTML을 동시에 사용하는 것을 금지합니다.
no-deprecatedReact의 deprecated API 사용을 금지합니다.
no-did-mount-set-statecomponentDidMount에서 setState 호출을 금지합니다.
no-did-update-set-statecomponentDidUpdate에서 setState 호출을 금지합니다.
no-direct-mutation-statethis.state를 직접 변경하는 것을 금지합니다.
no-find-dom-nodefindDOMNode 사용을 금지합니다.
no-invalid-html-attribute잘못된 HTML 속성 사용을 금지합니다.
no-is-mountedisMounted 사용을 금지합니다.
no-multi-comp한 파일에 여러 컴포넌트를 정의하는 것을 제한합니다.
no-namespaceReact 요소에서 XML namespace 사용을 금지합니다.
no-object-type-as-default-prop함수 컴포넌트 기본 매개변수에 객체/배열 같은 참조 타입 기본값을 직접 두는 것을 금지합니다.
no-redundant-should-component-updateReact.PureComponent에서 불필요한 shouldComponentUpdate 사용을 금지합니다.
no-render-return-valueReactDOM.render 반환값 사용을 금지합니다.
no-set-statesetState 사용을 금지합니다.
no-string-refs문자열 ref 사용을 금지합니다.
no-this-in-sfc함수 컴포넌트에서 this 사용을 금지합니다.
no-typosReact 컴포넌트 API 이름의 흔한 오타를 금지합니다.
no-unescaped-entitiesJSX 마크업 안의 escape되지 않은 HTML 엔티티를 금지합니다.
no-unknown-property알 수 없는 DOM 속성 사용을 금지합니다.
no-unsafeunsafe 라이프사이클 메서드 사용을 금지합니다.
no-unstable-nested-components컴포넌트 내부에서 매 렌더마다 새 컴포넌트를 만드는 패턴을 금지합니다.
no-unused-class-component-methods클래스 컴포넌트의 사용하지 않는 메서드 선언을 금지합니다.
no-unused-prop-types선언했지만 사용하지 않는 propTypes를 금지합니다.
no-unused-state사용하지 않는 state 정의를 금지합니다.
no-will-update-set-statecomponentWillUpdate에서 setState 호출을 금지합니다.
prefer-es6-classReact 컴포넌트를 ES5 방식 또는 ES6 class 방식 중 지정한 스타일로 강제합니다.
prefer-exact-propsFlow의 exact prop type 정의를 선호하도록 강제합니다.
prefer-read-only-propsprop을 읽기 전용으로 선언하도록 강제합니다.
prefer-stateless-functionstate 없는 컴포넌트를 순수 함수로 작성하도록 강제합니다.
prop-typesReact 컴포넌트 prop 검증 누락을 금지합니다.
react-in-jsx-scopeJSX 사용 시 React가 scope 안에 있도록 요구합니다.
require-default-props필수가 아닌 prop에 기본값 정의를 요구합니다.
require-optimizationReact 컴포넌트에 shouldComponentUpdate 구현을 요구합니다.
require-render-returnclass 컴포넌트의 render 메서드가 값을 반환하도록 강제합니다.
self-closing-comp자식이 없는 컴포넌트와 요소를 self-closing 형태로 쓰도록 강제합니다.
sort-comp컴포넌트 메서드 순서를 강제합니다.
sort-default-propsdefaultProps 선언을 알파벳순으로 정렬하도록 강제합니다.
sort-prop-typespropTypes 선언을 알파벳순으로 정렬하도록 강제합니다.
state-in-constructorclass 컴포넌트 state 초기화 위치를 강제합니다.
static-property-placementReact 컴포넌트 static property를 어디에 둘지 강제합니다.
style-prop-objectstyle prop 값이 객체가 되도록 강제합니다.
void-dom-elements-no-childrenimg, br 같은 void DOM 요소에 children을 전달하지 못하게 합니다.