inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

FileUpload.js에서. UploadProductPage로 데이터 전송시에

183

Jaewoong Kang

작성한 질문수 8

0

안녕하세요 개인 프로젝트를 진행중이다가 살짝 어려운 부분에 있어서 해결하려고 구글링도 해보고 했는데 해결이 되지 않아서 문의드려봅니다. 강의 내용과도 연관된거라 괜찮을듯해서요.

지금 강의에선 FileUpload에서 실제 사진전송을 서버로 요청하고, 서버에서 요청을 완료하면 response로 이미지 정보를 반환한 후 이것을 다시 Parent인 UploadProductPage에 해당 파일의 path 정보를 반환해서 이것을 Parent에서 디스플레이하는 형식인데, 전 썸네일을 추가했습니다.

결과적으로 FileUpload에서 서버로부터 받아서 Parent 컴포넌드로 전송해주는 정보가 2가지로 imagePath와 thumbnailPath이렇게 입니다. 따라서 Parent로 전송하는 것이 단순한 string 데이터가 아니고 variables 객체 안에 image: Images / thumbnail: Thumbnails 이렇게 2개 항목을 state로 정의해주고 있는데요. 문제는 이렇게 전송할시 Parent에서 처음 읽을시에 제대로 값을 읽지 못한다는 점입니다. 처음을 제외하면 그 다음부턴 undefined가 아니라 제대로 값을 읽어오는데요. 이것이 요청처리로 인한 delay 때문인지 정확히 모르겠습니다. 따라서 image값을 Images state가 아닌 직접 response.data.imagePath로 정의해주면 처음부터 이상없이 값을 읽어오지만 아무래도 variable의 관리상 state으로 정의해주는게 좋을듯해서요.

혹시 delay 때문인가 해서 방법을 알아보니 새로 useTransition이란 훅이 있던데 이건 리액트18부터 적용되는 거라 아직 불안해서 17에서 해결할 방법을 고민중입니다

코드를 직접 넣은게 아니라 헥깔리실 수도 있는데 거의 동일한 코드라 괜찮으실꺼 같아요. 이 부분만 다시 적으면, 

 Axios.post('/api/gallery/upload/image', formData, config).then(response => {
            if (response.data.success) {
                setImages(response.data.filePath);
                setThumbnails(response.data.thumbnailPath);
                let variables = {
                    image: Images,
                    thumbnail: Thumbnails
                }
                props.refreshFunction(variables);
            } else {
                alert('Failed to save images on the server');
            }
        });

처음에는 Thumbnail 생성을 따로 Axios 안의 Axios로 추가로 서버에 요청해서 처리해줬었는데 굳이 각각 따로 요청할 필요가 있을까 하는 생각도 들고, 그냥 서버에서 직접 썸네일이미지를 생성하주고 그 정보를 받아왔는데요, 이때 오류생기면 또 그에 따른 오류메세지만 전송하면 될듯해서 이렇게 했는데 바로 variables을 정상적으로 update하는데 문제가 있는듯합니다.

정확한 답이 아니더라도 해결책이 될 수 있는 조언이라도 해주실 수 있나요?

감사합니다

fileupload mongodb usetransition 웹앱 nodejs react redux

답변 0

강의 내용은 훌륭하나, 환경 설정 오류 때문에 진도를 나갈 수 없습니다. 20년 버전 강의.

0

75

1

강의자료는 어디서 볼 수있나요??

0

87

1

이 쇼핑몰 만들기 강의는 관리자페이지 만드는건 없나요

0

137

2

웹에서 실시간 코드반영이 안돼요

0

141

1

app.use질문

0

75

1

강사님께 어떻게 직접질문할수있어요??

0

87

1

const함수같은거 기초강의는 어디있나요

0

97

2

리덕스 참조챕터가 어딨어요? 미리듣고오라는데요

0

88

2

강의가완전 오래되서 다 틀리네 app.jsx도 tailwind css 다틀림 무책임함

0

76

1

개발자도구에 redux란이 없어요

0

96

1

npx tailwindcss init -p 에서 계속 에러나요

0

103

1

쇼핑몰기능중 찜하기 기능은 어떻게 구현하나요

0

151

2

강의하다 줌으로 설명가능한지좀 정확히 알려주세요. 이 선생님 정책이 어떻게 되는데요. 직접 연락할 메일이라도 알려주세요

0

48

1

도표 강의 자료 열람 불가능

0

118

1

tailwindcss를 vite에서 이용하는 방식이 바뀐것 같습니다.

0

1159

2

eslint 설정 후 오류가 납니다.

0

235

1

오버로드 오류

0

161

1

VSCode에서 save를 할 때, landingpage의 useEffect가 실행되는 문제에 대하여

0

181

1

dispatch(logoutUser()) 실행시 dispatch(authuser())도 함께 실행되는 문제

0

239

2

logout할 때, server로 요청을 보내서 authUser middleware를 통과하도록 하는 이유?

0

203

1

webkit-text-size-adjust 오류

0

329

1

does not provide an export named 'userReducer'

0

224

2

빌드 배포

0

143

1

삭제 예정 강의는 언제 삭제 되나요? 저것때문에 수강완료를 못하면 회사에서 비용을 청구한다고 합니다~

0

232

2