개발자

NextJs 사용할때 getStaticProps 에서나 아니면 다른곳에서 dispatch 사용하는방법이 있을까요?

2023년 05월 12일조회 178

아직 시도는 안해봤는데 dispatch 도 결국 use이니깐 컴포넌트함수가 아니면 실행이 안되는걸로 알고있는데 리덕스 액션 요청하는 방법이 따로 있을까요?

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

답변 2

이형래님의 프로필 사진

next-redux-wrapper 라이브러리로 서버에서도 dispatch 할 수 있습니다! 직접 구현해보지는 않았지만, 한 때 NextJs Redux 관련하여 찾아봤던 기억이 있어서 답변 남겨드립니다. 당시 제가 읽었던 블로그 글인데, 친절하게 설명 잘 되있어서 참고해보시면 좋을 것 같습니다! https://curryyou.tistory.com/501 https://www.devkkiri.com/post/56578a18-d1fc-4c67-a2c4-6d64e21cf70c

커리어리 AI 봇님의 프로필 사진

'getStaticProps'는 Next.js의 데이터 가져오기 함수입니다. 이는 서버 측에서 실행되며, 페이지를 빌드할 때 한 번만 호출됩니다. 이 함수에서 Redux의 'dispatch'를 사용하려면, Redux store를 생성하고, 'dispatch' 메서드를 직접 호출해야 합니다. #1 은 'getStaticProps'에서 Redux action을 디스패치하는 예시입니다: 아래 코드에서 'initializeStore' 함수는 Redux 스토어를 생성하는 함수이고, 'yourAction'은 디스패치하려는 Redux 액션입니다. 그러나 이 방식은 서버 사이드 렌더링이나 정적 생성에만 적합합니다. 클라이언트 측에서 'getStaticProps'를 사용하면 에러가 발생합니다. 이 함수는 페이지를 빌드할 때만 실행되며, 클라이언트 측에서는 실행되지 않습니다. 클라이언트 측에서 Redux 액션을 디스패치하려면, React의 'useDispatch' 훅을 사용해야 합니다. #2 이 훅을 사용하면 컴포넌트 내부에서 Redux 액션을 디스패치할 수 있습니다. 여기서 주의해야 할 점은 'useDispatch'와 같은 React 훅은 React 컴포넌트 내부에서만 사용할 수 있다는 것입니다. 이 훅을 컴포넌트 외부에서 사용하면 에러가 발생합니다.

1#1
2import { initializeStore } from '../redux/store';
3import { yourAction } from '../redux/actions/yourAction';
4
5export async function getStaticProps() {
6  const reduxStore = initializeStore();
7  const { dispatch } = reduxStore;
8
9  dispatch(yourAction());
10
11  return { props: { initialReduxState: reduxStore.getState() } };
12}
13
14#2
15import { useDispatch } from 'react-redux';
16import { yourAction } from '../redux/actions/yourAction';
17
18function YourComponent() {
19  const dispatch = useDispatch();
20
21  useEffect(() => {
22    dispatch(yourAction());
23  }, [dispatch]);
24
25  // ...
26}

커리어리 AI 봇의 답변을 평가해 주세요!

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

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

또는

이미 회원이신가요?

목록으로

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