inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

슬라이딩 배너 구현

useState의 기본값이 null과 []일 때에 대해서

2921

활성산소

작성한 질문수 8

1

이번 강의에서 useState를 사용하다가 문득 궁금증이 생겻습니다.

function ProductPage() {
  const { id } = useParams();
  const [product, setState] = useState(null);

상품상세페이지를 구현한 코드에서 useState(null)로 기본값을 null을 주었습니다. 

function MainPage() {
  const [products, setProducts] = React.useState([]);
  const [banners, setBanners] = React.useState([]);

그런데 메인페이지를 구현한 코드에서 useState([])와 무슨 차이가 있을까 궁금해서 실습을 해봤습니다.

function MainPage() {
  const [products, setProducts] = React.useState(null);
  const [banners, setBanners] = React.useState(null);

그 결과 이런 오류가 떴고 나름 혼자서 여러번 고민해 본 결과

---------------------------------------------------------

axios에서 통신을 하는 동시에 banners.map 처리를 하는 과정에서 banners가 기본값 null을 가지고 있는 상태기 때문에 map 메소드를 사용할 수 없다.

따라서 비동기 처리가 원인이고 banners의 기본값으로 빈 배열을 할당해 줘야 banners.map을 처리하는 과정에서 오류가 나지 않고 이후에 axios 통신이 끝나고 setBanners를 통해 새롭게 값을 받으면 컴포넌트가 다시 랜더링되어 클라이언트 화면에 보여지게 된다.

---------------------------------------------------------

이렇게 결론을 내봤는데 그랩 님 고견은 어떠신지..ㅜㅜ

완전 입문자라 구글링 해봐도 어려운 내용들이 많아서 저처럼 이런 기본적인 글은 없더라구요;;;

그랩 님 강의 잘 듣고 있습니다 감사합니다!

tensorflow nodejs express react 머신러닝 배워볼래요? react-native HTML/CSS javascript

답변 1

1

그랩

좋은 고민을 하셨네요! 고민하신 내용이 일치합니다.

일반적으로 array 자료형은 map이라는 메소드를 사용할 수 있습니다. 하지만 int나 null 같은 다른 자료형에서는 사용이 불가능합니다. 3.map(...), null.map(...) 같이 사용하게 되면 에러가 나게 됩니다.

리액트 컴포넌트가 서버에 요청을 하게됐을 때 비동기 처리이기 때문에 기다리지 않고 렌더링을 이어서 하게 됩니다. 그때 null을 기본 값으로 넣어주면 에러가 나기 때문에 빈 배열 []을 넣어줘서 에러를 안나게 할 수 있는 겁니다~!!

[해결]그랩님 답변 주세요.

0

192

2

그랩님의 답변을 기다립니다/102강 전반적인 에러

0

165

2

[그랩님께]101강 안드로이드 에러들(Key prop)해결방법 궁금합니다.

0

139

2

[재질문][그랩님 답변 부탁드립니다]101강

0

163

2

[그랩님 답변 부탁드립니다]101강 Axios 에러와 502 Bad Gateway 질문

0

119

2

Ngrok 설치 후 forwarding Url 에러

0

148

2

[그랩님께,Ngrok 악성코드 인식 해결방법]질문 드립니다.

0

252

2

Ngrok 설치 후 forwarding Url로 연결 불가

0

158

1

그랩님,[꼭] 답변 부탁드립니다.

0

76

1

[꼭][[꼭] 그랩님, 답변 부탁드립니다], Failed to load resource: the server responded with a status of 404 (Not Found) 상품 상세 페이지 질문입니다.

0

162

1

6강/7강 수업

0

56

1

그랩님, 상품 상세 페이지 에러와 의문점 질문드립니다.

0

105

2

그랩님, 해결되지 않은 에러 메시지 [꼭] 답변 부탁 드립니다.

0

148

2

[재 질문]Cannot read properties of undefined (reading 'map') TypeError: Cannot read properties of undefined (reading 'map') 에러 해결 어떻게 하나요?

0

95

1

Cannot read properties of undefined (reading 'map') TypeError: Cannot read properties of undefined (reading 'map') 에러 해결 어떻게 하나요?

0

134

2

일반적인 css 꾸미기에서 width와 height의 값?

0

98

2

Windows에서의 업로드 후 홈화면 상품이미지 오류 해결방법

0

204

1

그랩마켓 웹화면 구현하기 -2 질문입니다.

0

127

1

react에 반영이 되지 않습니다.

0

251

1

터미널 npm install -g create-react-app 작성 후 오류

0

430

1

create-react-app my app 실행 시 에러

0

358

2

포스트맨 질문

0

105

1

<꼭 답변 부탁 드립니다>그랩선생님, [컴포넌트 사용하기] 강의에서 질문 있습니다.

0

269

2

그랩선생님, 질문 답변 부탁 드립니다.vscode에서 npm install -g create-react-app 입력 후 에러 입니다.

0

492

2