React에서 props를 전달할 때 중괄호를 이용하여 전달하고자 하는 데이터를 담습니다.
하지만 문자열 값인 props는 별도의 중괄호 없이 쌍따옴표만 이용하여 전달할 수 있습니다.
// Bad
<Paragraph variant={"h5"} heading={"A new book"} />
// Good
<Paragraph variant="h5" heading="A new book" />
이를 프로젝트 전체에 적용하기 위해 ESLint 규칙을 적용해봅시다.
먼저, React와 관련된 규칙을 정의한 eslint-plugin-react
패키지를 설치해 줍니다.
npm install eslint-plugin-react --save-dev
yarn add eslint-plugin-react --dev
eslint-plugin-react
관련 plugins 옵션이나 extends 옵션에 대한 설명은 본 내용에서 다루지 않습니다.
자세한 내용은 링크에서 참고해주세요.
그리고 react/jsx-curly-brace-presence
규칙을 추가해봅시다.
react/jsx-curly-brace-presence
react/jsx-curly-brace-presence
는 ESLint 규칙 중 하나로, JSX 문법에서 props나 children에 중괄호({}
) 사용 방식을 제어하는 규칙입니다.
...
"react/jsx-curly-brace-presence": [<enabled>, { "props": <string>, "children": <string>, "propElementValues": <string> }]
...
이 규칙은 다음과 같은 세 가지 옵션을 가지고 있습니다:
always
: JSX props, children 및 prop values에 항상 중괄호를 사용합니다.never
: JSX props, children 및 prop values에 불필요한 중괄호를 제거합니다.ignore
: JSX props, children 및 prop values에 적용된 규칙을 무시합니다.이 규칙은 항상 쌍따옴표를 사용합니다.
{ props: "always", children: "always" }
// Before
<App>Hello world</App>;
<App prop='Hello world'>{'Hello world'}</App>;
// Fixed
<App>{"Hello world"}</App>;
<App prop={"Hello world"}>{'Hello world'}</App>;
{ props: "never", children: "never" }
// Before
<App>{'Hello world'}</App>;
<App prop={'Hello world'} attr={"foo"} />;
// Fixed
<App>Hello world</App>;
<App prop="Hello world" attr="foo" />;
{ props: "always", children: "always", "propElementValues": "always" }
// Before
<App prop=<div /> />;
// Fixed
<App prop={<div />} />;
{ props: "never", children: "never", "propElementValues": "never" }
// Before
<App prop={<div />} />;
// Fixed
<App prop=<div /> />;
// .eslintrc.json
{
...
"rules": {
...
"react/jsx-curly-brace-presence": [
"error",
{ "props": "never", "children": "never" }
],
}
}
일괄 적용 끝!
참고