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 를 사용할 때 에러가 나요.

831

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;

supabase next.js와 mcp

0

2

0

스테이징 10000개

0

5

1

160. Claude Code로 PPT 만들기 관련 질문

0

5

1

task master 관련질문입니다.

0

8

1

android crud중 c 영상이 12초만 있는 잘린 영상이에요.

0

15

2

터미널 시작폴더가 달라요

0

23

2

my-profile-site 404 error

0

16

2

노션 .env.local

0

25

1

shrimp_data - WebGUI.md

0

19

2

powershell 복붙 문제

0

22

2

displayName 에 대해 질문있습니다.

0

121

1

onAuthStateChanged 가 가지는 장점에 대해

0

289

1

회원가입 실행이 안되요

0

467

1

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

5

3332

2

useCollection Error

0

315

1

firebase deploy에러 문의 드려요.

2

761

1

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

0

414

1

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

1

586

1

전체 코드

0

283

0

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

0

751

1

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

0

653

1

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

0

355

2

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

0

599

1

뒷부분 소리 안나와요

0

275

2