강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

BBB AAA님의 프로필 이미지
BBB AAA

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

front 부분 여러가지 질문

해결된 질문

작성

·

274

0

nodebird react에서 front부분까지만 들은 상태입니다.

  1. redux 의 실행 흐름이

    dispatch(액션) -> 미들웨어(redux-saga) -> 리듀서 -> 스토어

    이러한 방식으로 알고 있는데

    언뜻 보면 미들웨어가 먼저 실행되니 success or failure가 먼저 실행될것 같은데

    saga함수에 딜레이를 안주더라도 실행은 request가 무조건 먼저 되는것 같습니다.

    왜 이렇게 실행이 되는건가요? 미들웨어와 리듀서가 비동기적으로 실행되는건가요?

    Success or failure가 먼저 실행되는 케이스가 있나요?

     

  2. 각 기능들에 대한 상태관리를 request, success, failure 3가지의 액션타입으로 관리하는 이유가 뭔가요? 공식문서에는 이렇게 나와있긴 한데

     

    https://lunit.gitbook.io/redux-in-korean/advanced/asyncactions

    " 하나의 액션 타입에 표지를 두고 사용하건, 여러 액션 타입을 사용하건 여러분에게 달렸습니다. 여러분이 팀과 함께 정할 규칙일 뿐입니다. 여러 타입을 쓰면 실수는 줄겠지만, 여러분이 redux-actions와 같은 헬퍼 라이브러리를 써서 액션 생산자와 리듀서를 만든다면 이게 별 문제가 되지 않을 수도 있습니다. "

     

    제로초님 입장에서는 어떻게 생각하시나요? 또 실무에서는 하나의 액션으로 처리하는지 아니면 강좌처럼 세가지의 액션으로 나누어서 처리하는지 궁금합니다.

     

  3. request에 대한 로직을 하나 보면

    case LOG_IN_REQUEST:
            draft.loginLoading = true;
            draft.logInError = null;
            draft.logInDone = false; // Done을 왜 굳이 초기화 해야하지?

    logInDone 같은 경우는 request 이전에도 이미 false라고 생각하는데 따로 초기화를 명시해주는 이유가 있나요?

     

  4. 프론트엔드를 구현할때 처음에 데이터 구조 잡을 때 아직 정해진거 없으면 전체 데이터베이스 구조를 제가 정하고 들어가야 하는건가요?

    전체 테이블 구조를 관계설정까지 다 잡고 들어가야 하는건지, 아니면 내가 구현하는 기능에 대한 테이블 구조만 하나씩 잡고 들어가면 되는건지 궁금합니다.

     

  5. 사실 이 강좌를 듣기 전에는 프론트엔드 부분 데이터를 구현할 때

    백엔드로 요청을 보내고, 그 응답으로 데이터를 건네받아서, 해당 데이터를 가지고 프론트에

    직접 값을 표시하는 방식으로 웹이 돌아가겠지, 라고 생각을 했습니다.

    (프론트엔드에서 API 요청 -> 백엔드에서 데이터처리, 응답 -> 응답에서 받은 데이터로 뷰 가공 및 출력)

    그런데 강좌에서는 벡엔드에서의 처리와 별개로, 프론트에서의 데이터는 프론트에서의 로직만으로 처리하도록 구현하셨는데요. 이렇게 하는 이유가 있으신가요?

     

  6. 프론트를 처음 구현할때 처음에 데이터 구조 잡을 때 아직 정해진거 없으면 먼저 전체 데이터베이스 구조를 제가 정하고 들어가야 하는건가요?

    전체 테이블 구조를 관계설정까지 다 잡고 들어가야 하는건지, 아니면 내가 구현하는 기능에 대한 테이블 구조만 하나씩 잡고 들어가면 되는건지 궁금합니다.

     

  7. redux saga 함수 로직보면 백엔드API요청 후에 put 연산 success or failure 로직으로 나뉘는데

    원래 try catch 문 안쓰면 axios.post().then(() => put(action)).catch(e => put(action)) 이런식으로 쓰는 로직이랑 같은건가요?

     

     

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

  1. 미들웨어랑 리듀서랑 실행이 독립적입니다. 둘 다 실행됩니다.

  2. 리덕스에서 세 가지로 실행하도록 아예 공식적으로 정해져있습니다.

  3. 여러 번 로그인/로그아웃을 하는 경우를 생각해보세요.

  4. 내가 구현하는 기능만 구조를 잡으시면 됩니다.

  5. 이걸 하기 위해 프론트엔드 개발자가 생긴 겁니다. 이걸 안하면 퍼블리셔나 다를 바가 없습니다.

  6. 4번이랑 동일한 질문이네요.

  7. 네 맞습니다. call(api).then(...).catch(...)겠죠.

BBB AAA님의 프로필 이미지
BBB AAA

작성한 질문수

질문하기