inflearn logo
강의

Course

Instructor

Bite-Sized React (React.js): From Basics to Practice

8.5) Read - Rendering the Todo List

8.5) Read = 투두리스트 렌더링하기

113

eachan

4 asked

0

안녕하세요.

투두리스트 렌더링하기에서 TodoItem에 key를 넣지 않았을때 웹브라우저에서 에러가 발생하고, 강의 화면에 vscode에서도 보면 해당 소스코드 위치에 Missing "key" prop for element in... 이라고 나오는데, 제 경우에는 소스코드 위치에 Missing "key" prop for element in... 이라는 내용이 나오지 않습니다. Eslint 플러그인도 설치했고,

아래와 같이 설정 했는데, 무슨 차이 때문에 이런 현상이 생기는 걸까요?

    rules: {
      "no-unused-vars": "off",
      "react/prop-types": "off",
    },

그래서, 검색을 좀 해보았고 rules에 아래와 같이 내용을 추가해 봤는데도, Missing "key" prop for element in... 이 내용이 나오지 않습니다.

    rules: {
      "no-unused-vars": "off",
      "react/prop-types": "off",
      "react/jsx-key": "true",
    },

참고로 저의 package.json은 아래와 같습니다.

{
  "name": "section08",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint .",
    "preview": "vite preview"
  },
  "dependencies": {
    "react": "^19.1.1",
    "react-dom": "^19.1.1"
  },
  "devDependencies": {
    "@eslint/js": "^9.33.0",
    "@types/react": "^19.1.10",
    "@types/react-dom": "^19.1.7",
    "@vitejs/plugin-react": "^5.0.0",
    "eslint": "^9.33.0",
    "eslint-plugin-react-hooks": "^5.2.0",
    "eslint-plugin-react-refresh": "^0.4.20",
    "globals": "^16.3.0",
    "vite": "^7.1.2"
  }
}

javascript react node.js

Answer 5

0

winterlood

안녕하세요 이정환입니다.

보내주신 소스코드를 확인해보았더니 에디터 상에는 정말 오류가 표시되지 않네요, 이는 아마 Vite나 ESLint의 버전 업데이트로 인해 중요하지 않은(앱을 당장 중단시키지는 않는) 오류로 처리되어 에디터 상에는 나타나지 않는걸로 보입니다.

그러나 브라우저 콘솔에서는 아래와 같이 동일한 오류를 확인하실 수 있습니다.

image.png

해당 문제를 제보해주셔서 감사합니다. 더 정확한 원인이 파악되면 답글 추가로 남겨드리겠습니다!

0

eachan

https://drive.google.com/file/d/1aWeX_crs2-PYE4rQwzBvKEsoZjWD-wxx/view?usp=sharing 확인 부탁 드립니다.

0

eachan

안녕하세요.

Error Lens를 설치 했는데도 여전히 동작하지 않습니다.

저의 eslint.config.js 파일 전체 내용은 아래와 같고, rules 말고는 건드린 부분이 없습니다.

import js from "@eslint/js";
import globals from "globals";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
import { defineConfig, globalIgnores } from "eslint/config";

export default defineConfig([
  globalIgnores(["dist"]),
  {
    files: ["**/*.{js,jsx}"],
    extends: [
      js.configs.recommended,
      reactHooks.configs["recommended-latest"],
      reactRefresh.configs.vite,
      "plugin:react/recommended",
    ],
    languageOptions: {
      ecmaVersion: 2020,
      globals: globals.browser,
      parserOptions: {
        ecmaVersion: "latest",
        ecmaFeatures: { jsx: true },
        sourceType: "module",
      },
    },
    rules: {
      "no-unused-vars": "off",
      "react/prop-types": "off",
      "react/jsx-key": "true",
    },
  },
]);

0

winterlood

안녕하세요 이정환입니다. 정확한 확인을 위해 전체 프로젝트의 코드를 GitHub 혹은 Google Drive를 통해 링크 형태로 공유해주실 수 있을까요?

0

winterlood

안녕하세요 eachan님 이정환입니다.

소스코드 위치에 에러 메세지가 바로 나타나는 기능을 이용하시려면, 우리 강의의 1.2) VSCode 설치하기 챕터의 8분 51초 경에 설명드리고 있는 Error Lens 라는 확장 프로그램을 설치하셔야 합니다.

혹시 설치하셨음에도 안된다면 다시 답글 부탁드립니다 😀

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. eachan님.

리액트에서 리스트를 렌더링할 때 각 요소에 고유한 key prop을 제공하는 것은 필수적입니다. key 값은 리액트가 각 요소가 바뀌었는지 여부를 구별하는 데 사용되며, 이를 제공하지 않으면 콘솔에 경고 메시지가 나타날 수 있습니다.

현재 각 요소에 key prop을 제공하지 않았을 때 VsCode에서 경고 메시지가 정상적으로 보이지 않는 문제에 대해 설명드리겠습니다.

ESLint 규칙 및 VSCode의 경고 알림

  1. ESLint 설정 확인:

    • ESLint가 올바르게 설정되어 있고, 프로젝트에서 적용되고 있는지 확인해 보세요. ESLint 설정 파일(보통 .eslintrc 또는 .eslintrc.json)에 올바르게 규칙이 설정되어 있는지 확인합니다.
  2. VSCode ESLint 플러그인:

    • VSCode의 ESLint 확장 플러그인을 설치하고, 환경 설정에서 해당 확장 프로그램이 활성화되어 있는지 확인하세요. 때로는 VSCode에서 플러그인이 제대로 활성화되지 않을 수 있습니다.
  3. Linting 규칙:

    • react/prop-types와 같이 설정된 규칙 외에 react/jsx-key 설정이 필요합니다. 관련된 규칙이 활성화되어 있는지 반드시 확인해 보세요.
  4. 터미널 및 콘솔:

    • 코드 변경 후 ESLint가 제대로 실행되고 있는지 확인하기 위해 터미널에서 직접 ESLint를 실행해 보십시오. 경고가 터미널에 표시된다면, VSCode의 플러그인 문제일 수 있습니다.

관련하여 유사한 문제의 경우 해결책으로 다음과 같은 사례를 살펴볼 수 있습니다:

이 주제는 리액트 개발에서 중요한 부분이므로 기회가 되신다면 공식 문서나 커뮤니티 포럼에서 더 많은 정보를 찾으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

useEffect와 lifecycle문의

0

26

2

프론트엔드 학습 수준 문의

0

37

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

48

2

데이터 로딩중 화면만 계속 나와요!!

0

54

2

퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요

0

79

2

이후의 커리큘럼 문의

0

102

2

실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.

0

50

2

최적화 관련 질문있습니다 (useMemo 등)

0

84

3

프로바이더 컴포넌트의 위치는 어떤 기준인가요?

1

82

3

Date 객체에 관련하여 질문드립니다.

0

85

2

리액트 개정판 교재 질문

0

60

2

예제코드가 안나와요!

0

78

2

select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com

0

108

2

onMouseEnter 관련 문의 드립니다

0

92

3

배열의 렌더링 관련 질문 드립니다.

0

73

2

2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.

0

112

2

TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?

0

135

2

useCallback 적용한 onCreate, onUpdate, onDelete 함수..

0

69

1

vs code 자동완성관련 문의

0

112

2

91강 useEffect내에서 상태변화함수 호출시 발생하는 에러

1

178

2

87강 필터 함수 질문

0

68

2

useRef, useState count 비교

0

67

2

안된다고했던 이유가 무엇이었는지 모르겠습니다

0

90

2

85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.

0

75

2