inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Các cậu cứ thoải mái làm backend nếu muốn, tớ không sao đâu vì tớ đã có Firebase rồi.

context로 관리 thông tin người dùng

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

855

znrzl11157

2 câu hỏi đã được viết

0

 

 

  const { dispatch } = useAuthContext();

 

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

 

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

const dispatch: any

 

와 같은 에러가 생깁니다.

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

 

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

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

react firebase

Câu trả lời 1

1

wonbeom


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;

스타터킷 중요도에 대한 질문입니다.

0

4

1

3-13 리텐션 과제 제출합니다

0

1

1

mission12-01 guide.md파일 누락

0

6

1

슬라이드 오타

0

12

0

전체적인 개발에 대해 문의드립니다.

1

29

1

챌린지 시작일 문의

0

26

0

줄바꿈 시 \ 필수인가요?

0

35

2

2605 이후 최신 클로드코드 강의 추가 부탁드립니다.

0

31

2

커리큘럼 문서 제공받을 수 있을까요?

0

32

1

ThemeProvider를 이용해서 NextThemeProvider를 따로 생성하여 Layout.tsx에 적용하는 이유는 뭘까요?

0

22

1

displayName 에 대해 질문있습니다.

0

153

1

onAuthStateChanged 가 가지는 장점에 대해

0

320

1

회원가입 실행이 안되요

0

497

1

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

5

3379

2

useCollection Error

0

331

1

firebase deploy에러 문의 드려요.

2

783

1

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

0

445

1

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

1

604

1

전체 코드

0

294

0

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

0

774

1

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

0

683

1

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

0

374

2

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

0

627

1

뒷부분 소리 안나와요

0

296

2