300x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로젝트
- eslint 자동화
- 우테코
- 카페인
- 유틸함수
- Husky
- 프로젝트 카페인
- eslint에러 자동fix
- css instead of js
- 성능 베이스캠프
- 우아한테크코스
- storybook
- 크로마틱
- 협업
- 클로저
- git hooks
- string-width
- react
- CSS
- JavaScript
- webpack
- 클린코드
- 자바스크립트
- prettier 자동화
- chromatic
- vscode
- 이슈번호자동화
- importOrder
- import정리
- IDL attributes
Archives
- Today
- Total
FEB:)DAIN
import React from 'react' 생략하는 법 본문
728x90
import React from 'react'는 리액트 17부터 생략 가능하지만, CRA 없이 처음 환경 설정을 하다가 생략이 안 되는 문제가 발생했다.
1. 타입 에러
아래와 같은 타입 에러는
'React' refers to a UMD global, but the current file is a module. Consider adding an import instead.ts(2686)
tsconfig.json에서
{
"compilerOptions": {
...
"jsx": "react"
}
"jsx": "react"를 "jsx": "react-jsx"로 바꿔주면 된다.
{
"compilerOptions": {
...
"jsx": "react-jsx"
}
🤔 왜 이렇게 하면 생략이 가능할까?
"compilerOptions의 jsx"는 컴파일러 옵션에서 JSX를 어떤 방식으로 해석하고 변환할 것인지 설정하는 부분이다. 'react'로 설정하면 React.createElement() 함수를 사용하여 JSX 요소를 변환하겠다는 의미가 된다. 하지만 리액트 17 버전 이후부터 사용되는 방식인 'react-jsx'는 JSX를 바로 사용할 수 있도록 변환한다. 그래서 'react-jsx'를 사용하면 에러가 나지 않는 것이다.
2. eslint 에러
만약 eslint에서 에러를 발생시킨다면
.eslintrc 파일 rules에 아래 코드를 추가해 주면 된다.
{
rules: {
'react/react-in-jsx-scope': 'off',
},
};
728x90
'코딩 > 트러블 슈팅' 카테고리의 다른 글
Manifest: Line: 1, column: 1, Syntax error (0) | 2023.09.11 |
---|---|
[스토리북 에러] var stringWidth = require('string-width') Error [ERR_REQUIRE_ESM] (0) | 2023.08.10 |
storybook에서 msw 사용하기 (1) | 2023.07.30 |
storybook에서 svg 오류 개선 (0) | 2023.07.25 |
git hooks(커밋 메시지에 이슈 번호 자동 입력)와 husky 충돌 개선 (0) | 2023.07.20 |