inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

너네 백엔드 하고 싶은 거 있으면 얼마든지 해 난 괜찮어 왜냐면 나는 파이어베이스가 있어

context로 유저정보 관리하기

useAuthContext 에서 dispatch 를 사용할 때 에러가 나요.

831

냥냐야냥

작성한 질문수 2

0

 

 

  const { dispatch } = useAuthContext();

 

위와 같이 사용했을 때 dispatch 아래에 밑줄이 생기는데

 

'null' 형식에 'dispatch' 속성이 없습니다.ts(2339)

const dispatch: any

 

와 같은 에러가 생깁니다.

(alias) const AuthContext: Context<null>
import AuthContext

 

이렇기 때문인 것 같은데 어떻게 수정해야할까요..

타입스크립트를 사용하고 있습니다.

react firebase

답변 1

1

깨구리


Contextdispatch에 타입을 잘 넣어주시면 됩니다 :)
찾으신것처럼 Context에 타입을 null로 주셔서 아무것도 없는데 dispatch를 꺼내쓰려고 해서 생긴 오류입니다.

참고할만한 예제 코드를 드리겠습니다. 연습해보시고 적용하시면 좋을듯 해요. 화이팅입니다!

import { Dispatch, createContext, useContext,  useReducer } from 'react';


type Action = { type: 'increment' } | { type: 'decrement' };

function counterReducer(state: number, action: Action): number {
  switch (action.type) {
    case 'increment':
      return state + 1;
    case 'decrement':
      return state - 1;
    default:
      throw new Error('Unhandled action type');
  }
}

const initialState = 0;

type CounterContextType = {
  state: number;
  dispatch: Dispatch<Action>;
};

const CounterContext = createContext<CounterContextType>({
  state: initialState,
  dispatch: () => {},
});

function CounterProvider(props: { children }) {
  const [state, dispatch] = useReducer(counterReducer, initialState);

  const value = { state, dispatch };

  return <CounterContext.Provider value={value} {...props} />;
}

function useCounterContext(){
  const context = useContext(CounterContext);
  return context
}


function Counter() {
  const {state, dispatch} = useCounterContext();
  const handleIncrement = () => dispatch({ type: 'increment' });
  const handleDecrement = () => dispatch({ type: 'decrement' });

  return (
    <>
      <h1>{state}</h1>
      <button onClick={handleIncrement}>+</button>
      <button onClick={handleDecrement}>-</button>
    </>
  );
}

function App() {
  return (
    <CounterProvider>
      <Counter />
    </CounterProvider>
  );
}

export default App;

실습에 사용된 MD파일 공유 가능한가요?

1

12

2

mcp서버 추가 후 setting.local.json

0

11

2

agents 관련 질문입니다!

0

13

1

plan 모드 결과에 대해

0

21

2

VSCode 설정 문의

0

16

2

클로드 계정 변경

0

15

2

(6.11) 회원가입시 프로필 정보 자동 생성하기 Q. 호출 순서 문의

0

15

1

114강. Playwirght MCP 관련 질문

0

16

2

main 브랜치 develop 브랜치

0

15

2

codex로 적용해도 큰 문제 없을까요?

0

29

1

displayName 에 대해 질문있습니다.

0

120

1

onAuthStateChanged 가 가지는 장점에 대해

0

289

1

회원가입 실행이 안되요

0

467

1

[빌드와 배포] Failed to list Firebase projects 오류 (해결)

5

3332

2

useCollection Error

0

314

1

firebase deploy에러 문의 드려요.

2

760

1

next js 에는 browserRouter가 없어서 상태에 맞는 화면을 어떻게 노출하나요?

0

414

1

저는 여기 css 파트에서 li가 점 . 으로 보이는데 안보이게 어떻게 하신건가요?

1

586

1

전체 코드

0

283

0

context api를 커스텀 후크로 뿌리시는 이유가 궁금해요.

0

750

1

next사용하는 프로젝트에 적용하려고 하는데 문제가 생겻습니다.

0

652

1

import시키고 npm start시켰을 때, 페이지는 나오는데, login, signup 페이지의 글자가 선생님처럼 나오지 않습니다!

0

355

2

firebase api key 가 유효하지 않습니다.

0

599

1

뒷부분 소리 안나와요

0

275

2