개발자

[리액트] 코드를 저장하고 웹을 보면 제가 원하는 결과가 안 뜨다가 , 코드를 다시 수정하고 저장하면 그제서야 원하는 결과가 나와요 ㅠㅠ

2023년 11월 15일조회 446

제목이 좀 어수선한 것 같은데 .. 다시 한 번 설명을 드리자면, 게시글 리스트를 만드는 중입니다. 제가 팔로우한 사람들의 게시글을 불러오기 위해 following API를 사용하여 사람들의 리스트를 불러오고, 그 리스트를 게시글을 불러온느 API를 사용하여 map을 돌렸어요. 그리고 코드를 저장한 후에 웹을 실행 시켜보면 '등록된 상품이 없습니다.' 라고 뜹니다. 하지만 다시 코드를 수정하고 저장하면 (수정의 예는 그냥 세미콜론을 없앤다거나, 주석을 없앤다거나 코드에 영향이 없는 수정입니다!) 제가 원하는 게시글 리스트가 웹에 결과로 나타납니다 ㅠㅠ 도대체 이게 무슨 일일까요..? 렌더링의 문제인가요? 사진에서 const page 부분이 return부분입니다

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

인기 답변

김현진님의 프로필 사진

togetherList 함수가 빈 디펜던시 배열인 useEffect에서 실행되고 있네요. 해당 함수가 마운트될 때에만 실행이 될텐데 이때 following 변수가 다른 useEffect 통해서 setFollowing 되기 전에 호출이 되어서 결과가 없을 가능성이 있어보입니다. 디펜던시 배열에 following을 추가하면 해결될 듯 합니다. 그런데 useEffect의 디펜던시 배열에 object가 들어갈 경우 렌더링이 될 때마다 useEffect가 계속 호출 될 수 있어 다른 값을 사용하는 것이 좋습니다. await을 통해 following과 togetherLists를 한 useEffect에서 순차적으로 호출을 하거나 isFollowingLoaded 등의 변수를 디펜던시에 넣는건 어떨까요? 로그를 찍어가며 각 값들이 제대로 들어간 것은 맞는지 확인해보면 문제를 찾는데 도움이 될 겁니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 11월 15일

코드 재설정에 대한 자세한 설명 없이 확실하게 답변하기는 어렵습니다. 하지만, 문제가 데이터를 받아오는 비동기 함수에서 발생하는 것으로 추정됩니다. React의 렌더링은 동기적으로 이루어지지만 API 호출과 같은 비동기 작업은 시간이 걸릴 수 있으므로, 원하는 결과가 즉시 나타나지 않을 수 있습니다. 다음 방법들을 통해 문제를 해결해 보세요: 1. **API 호출 코드 확인** 비동기 API 호출이 제대로 완료되었는지 확인합니다. 그리고 해당 promise가 resolve 또는 reject 되었음을 확인합니다. 2. **상태 관리 확인** React 상태 업데이트가 정확하게 이루어졌는지 확인합니다. setState() 메서드를 사용하여 상태를 변경하면 React 컴포넌트는 자동으로 다시 렌더링 됩니다. 이때 기존의 상태 값을 직접 변경하지 않고(즉, mutable 방식), 새로운 상태 값을 전달하여(즉, immutable 방식) 순수하게 상태를 변경해야 합니다. 3. **useEffect 훅 사용** `useEffect()` 훅을 사용하여 데이터 로딩 후 렌더링할 수 있습니다. 예를 들어 다음과 같이 작성할 수 있습니다. ```jsx const [posts, setPosts] = useState([]); useEffect(() => { fetch('url_to_your_api') // API url 변경 필요 .then(response => response.json()) .then(data => setPosts(data)) .catch(error => console.error('Something went wrong! ', error)); }, []); // 빈 dependency 배열을 추가하여 effect가 오직 컴포넌트가 마운트 될 때만 실행되도록 합니다. ``` 위 코드는 `fetch()`를 사용하여 API 요청을 보내고, 응답을 받아와서 `posts` 상태를 업데이트합니다. 이때 `useState()`와 `useEffect()` 두 개의 React 훅을 사용합니다. 이렇게하면 서버에서 데이터를 받아온 후 컴포넌트를 다시 렌더링하기 때문에 처음에 원하는 게시글 리스트가 나타나지 않는 문제를 해결할 수 있습니다. 아마 당신의 코드에서 비슷한 방식으로 데이터 로딩과 상태 업데이트를 처리하고 있는 것 같습니다. 만약 위 방법들로 문제 해결이 안 되는 경우, 문제가 발생하는 코드 부분과 함께 조금 더 자세한 설명을 제공해주시면, 좀더 구체적인 도움을 드릴 수 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!