안녕하세요, 소플입니다.
2025년 3월부로 인프런에서의 지식공유자 활동을 마무리하고 새로운 출발을 합니다.
앞으로는 아래 사이트에서 제 강의와 컨텐츠들을 만나보실 수 있습니다.
소플이 만든 프론트엔드 지식 포털 - FrontOverflow
Courses
Posts
Q&A
prevIsConfiromed 질문
안녕하세요, 소플입니다. useState() 훅의 set 함수를 사용할 때는 직접 값을 넣는 방법과, 함수를 넣는 방법이 있습니다.그리고 함수를 넣는 방법에서는 함수의 인자로 이전 값이 전달됩니다.더 자세한 내용은 아래 공식문서 링크를 참고하시기 바랍니다!https://inf.run/Mnd9D 감사합니다.
- 1
- 2
- 62
Q&A
chapter14 잘이해가 되지않습니다..
안녕하세요, 소플입니다. 먼저 강의에서 보셨다시피 Context를 사용하는 이유는,어떤 컴포넌트가 컴포넌트 트리 상에 어디에 위치해있든지 관계없이 특정 데이터에 접근할 수 있게 하기 위함입니다.이것은 우리가 흔히 Prop Drilling이라고 부르는 문제를 해결하기 위한 방법 중에 하나이기도 합니다.props를 통해서 데이터를 전달하는 것 자체는 문제가 아니지만, 그 깊이(depth)가 깊어지면 컴포넌트 코드가 지저분해지고 관리하기 쉽지 않게 됩니다.그래서 일반적으로는 Redux 같은 전역 상태 관리 라이브러리를 사용하거나, 간단하게는 Context API를 사용하게 됩니다.하지만 Context API를 사용한다고 해서 무조건 모든 컴포넌트가 해당 데이터에 접근할 수 있는 것은 아닙니다.누군가는 데이터를 제공(Provide)해줘야 하고, 그래야만 누군가가 그 데이터를 소비(Consume) 할 수 있습니다.여기서 데이터를 제공하는 역할을 하는 것이 바로 Context의 Provider컴포넌트이고, 소비하는 것이 Provider컴포넌트의 하위에 있는 Consumer 컴포넌트 입니다.클래스 컴포넌트를 주로 사용하던 과거에는 아래 링크에 있는 것과 같이 Consumer 컴포넌트를 별도로 사용했는데, 함수 컴포넌트를 사용하는 지금은 useContext() 훅을 사용해서 Provider 컴포넌트가 제공하는 값에 접근할 수 있습니다.https://inf.run/ujSMj 정리해보면, Provider 컴포넌트는 자신의 하위 컴포넌트에 value라는 prop으로 전달받은 데이터를 찔러주는 역할을 한다라고 할 수 있을 것 같습니다. 이해가 안 되는 부분은 추가로 질문 남겨주시기 바랍니다~!감사합니다.
- 1
- 2
- 63
Q&A
2025년 3월 리액트버전
안녕하세요, 소플입니다.이 강의에서는 리액트 기초 개념을 주로 다루기 때문에 지금 수강하셔도 전혀 문제가 없습니다!감사합니다.
- 1
- 2
- 86
Q&A
chapter_07 콘솔로그 질문드려요~!
안녕하세요, 소플입니다. 10번째에 추가로 로그가 찍히는 이유는 setIsFull(count >= MAX_CAPACITY);을 통해 isFull의 값이 true로 변경되면서 다시 한 번 위쪽에 있는 useEffect() 훅의 effect 함수가 실행되기 때문입니다.9번째 까지는 isFull의 값이 계속 false로 동일하기 때문에 호출되지 않은 것이구요~import React, { useState, useEffect } from "react"; import useCounter from "./useCounter"; const MAX_CAPACITY = 10; function Accommodate(props) { const [isFull, setIsFull] = useState(false); const [count, increaseCount, decreaseCount] = useCounter(0); useEffect(() => { console.log("======================"); console.log("useEffect() is called."); console.log(`isFull: ${isFull}`); }); useEffect(() => { setIsFull(count >= MAX_CAPACITY); console.log(`Current count value: ${count}`); }, [count]); return ( {`총 ${count}명 수용했습니다.`} 입장 퇴장 {isFull && 정원이 가득찼습니다.} ); } export default Accommodate; 감사합니다.
- 1
- 2
- 62
Q&A
안녕하세요 미니블로그 실습 질문드립니다.
안녕하세요, 소플입니다. 혹시 작성하신 코드 중에서 '글 작성하기' 버튼이 있는 코드를 올려주실 수 있을까요?코드를 봐야 원인 파악이 가능할 것 같습니다~! 감사합니다.
- 1
- 3
- 78
Q&A
에러가 떠요
안녕하세요, 소플입니다. 올려주신 로그만으로는 정확한 원인 파악이 힘든데, 현재 포트 번호가 3001로 되어 있네요~애플리케이션을 여러 번 실행시키신 것 같은데, 프로세스를 모두 종료하거나 PC 재부팅 이후에 다시 실행하고 3000번 포트로 접속해보시기 바랍니다! 감사합니다.
- 1
- 3
- 142
Q&A
Chapter6 질문 드립니다
안녕하세요, 소플입니다. 해당 메시지는 리스트에 key가 없어서 나오는 메시지입니다.리액트에서는 렌더링 최적화를 위해서 리스트의 각 요소에 key 속성을 넣어주어야 하는데,key 속성이 없을 경우 지금 겪고 계신 것과 같은 메시지가 출력됩니다.이후에 나오는 섹션 11. List and Keys에서 관련 내용을 설명하고 있으니 참고하시기 바랍니다! 감사합니다.
- 1
- 2
- 150
Q&A
실습 코드 있을까요?
안녕하세요, 소플입니다. 아래 주소에서 소스코드를 확인하실 수 있습니다.실습: https://github.com/soaple/first-met-react-practice-v18미니 프로젝트: https://github.com/soaple/mini-blog 혹시 잘 해결되지 않는 부분이 있다면 언제든지 질문 남겨주세요!감사합니다.
- 1
- 2
- 135
Q&A
상태가 업데이트될때 컴포넌트 최상단의 console.log 코드가 두번 실행되는 이유가 궁금합니다.
안녕하세요, 소플입니다.우선 현재 겪고 계신 상황을 자세하게 설명해주셔서 감사합니다.AI가 답변해준 StrictMode는 처음 컴포넌트 마운트 시에만 해당되는 내용이기 때문에, 지금 질문해주신 내용과는 다르다는 점을 먼저 말씀드립니다. 상황을 정리해보면 count가 변경됨으로써 재렌더링이 발생하고,그 이후에 count를 의존성 배열에 갖고 있는 useEffect() 훅에서 아래와 같은 코드가 실행됩니다.setIsFull(count >= MAX_CAPACITY);이 때 isFull의 값이 변경되면 재렌더링이 발생하지만, 변경되지 않더라도 내부적으로 Virtual DOM Tree를 생성하기 위해 함수 컴포넌트가 호출되면서 React element를 새로 만드는 경우가 있습니다.그래서 그런 경우에 로그가 두 번 출력되는 것이라고 이해하시면 됩니다. 아래에 더 간단한 예시코드를 첨부해두었으니 한 번 테스트 해보시기 바랍니다.이 코드에서도 동일한 값의 버튼을 누를 경우 콘솔 로그가 출력되지 않을 것으로 기대되지만,일부 상황에서는 콘솔 로그가 출력되는 것을 확인할 수 있습니다.import { useState } from "react"; function MyComponent() { console.log("컴포넌트 렌더링!"); const [state, setState] = useState(false); return ( State: {state.toString()} setState(false)}>false로 설정 setState(true)}>true로 설정 ); } export default MyComponent; 하지만 콘솔 로그가 출력(React element가 생성)된다는 것이 매번 화면이 갱신된다는 의미는 아닙니다.리액트는 Virtual DOM을 사용하여 변경된 부분만을 계산하고 업데이트하는데, 이 때 상태 값이 변하지 않으면 리액트는 변경 사항이 없다고 판단하고 실제 DOM 업데이트를 건너뛰게 되기 때문입니다. 나중에는 콘솔 로그를 찍어서 확인하기 보다는 React Devtools의 Profiler 기능을 사용해서 더 정확하게 재렌더링이 몇 번 발생하는지 확인해보시면 좋습니다! 감사합니다.
- 1
- 2
- 112
Q&A
npx create-react-app my-app 명령어 입력이 잘못된 것 같습니다
안녕하세요, 소플입니다. 권한이 없어서 발생하는 문제 같은데, 위 답변을 참고해서 한 번 진행해보시겠어요? 감사합니다.
- 0
- 3
- 175