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

tmdrbwk3님의 프로필 이미지

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

유저 정보 Context에 담아주기(3)

dispatch("LOGIN",res.data?.user); 쪽에서 에러가 뜹니다 ㅜ

작성

·

461

0

TypeError: dispatch is not a function

at _callee$ (login.tsx?11e1:20:10)

at tryCatch (runtime.js?ecd4:45:16)

at Generator.invoke [as _invoke] (runtime.js?ecd4:274:1)

at prototype.<computed> [as next] (runtime.js?ecd4:97:1)

at asyncGeneratorStep (_async_to_generator.mjs?949a:3:1)

at next (async_to_generator.mjs?949a:25:1)

라는 에러가 뜨는데 어디가 문젠지 모르겠습니다.. ㅠ

답변 4

1

그림과 같이 .app.tsx파일을 AuthProvider로 감싸주면 정상적으로 동작합니다!

도움이 되었습니다

0

// 제 코드입니다. ㅠㅠ 
export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
  const [state, defaultDispatch] = useReducer(reducer, {
    user: null,
    authenticated: false,
    loading: true,
  });

  const dispatch = (type: string, payload?: any) => {
    defaultDispatch({ type, payload });
  };

  return (
    <DispatchContext.Provider value={dispatch}>
      <StateContext.Provider value={state}>{children}</StateContext.Provider>
    </DispatchContext.Provider>
  );
};

혹시 어떻게 고치셧나요? ㅠ

0

tmdrbwk3님 해결방법 공유 가능하실까요? ㅠㅠ 저도 동일한 에러가 발생하는데 못 찾겠네요... 미리 감사드립니다.

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 !!!

import { useAuthDispatch, useAuthState } from "../context/auth"; const Login = () => { const dispatch = useAuthDispatch();

아마 이 부분을 안 넣어주신 거 같습니다

이 부분 추가 후 다시 해주세요 ^^

감사합니다.

tmdrbwk3님의 프로필 이미지
tmdrbwk3
질문자

해결했습니다! AuthProvider 로 감싸주지 않아서 생긴 에러였네요 ㅠㅠ

tmdrbwk3님의 프로필 이미지

작성한 질문수

질문하기