• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 Error: Invalid hook call 에러 질문있습니다!

Error: Invalid hook call 에러 질문있습니다!

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #38800

    전유진
    참가자
    firebase google login 기능 구현중 로그인 상태를 redux로 관리하려는데 useDispatch 훅 코드에서 오류가 납니다.
    
    firebaseAuth.js
    import { GoogleAuthProvider, signInWithPopup } from 'firebase/auth';
    import auth from './firebaseConfig';
    import { useDispatch } from "react-redux"
    import { setIsLogin } from '../store';
    const provider = new GoogleAuthProvider();
    // 로그인
    export const signInWithGoogle = () => {
    signInWithPopup(auth, provider)     
    .then((result) => {
    
    useDispatch(setIsLogin());             <---------------- 여기부분입니다!
    
    or
    
    const dispatch = useDispatch();    <-----------------
    dispatch(setIsLogin());
    
    // console.log(result);
    const name = result.user.displayName;
    const email = result.user.email;
    const profilePic = result.user.photoURL;
     localStorage.setItem("name", name);
     localStorage.setItem("email", email);
     localStorage.setItem("profilePic", profilePic);
    })
    .catch((error) => {
     console.log(error);
    });
    }
    // 로그아웃
    export const signOut = () => {
     auth.signOut()
    .then((result) => {
    
    여기서의 상태변경은 보류중입니당
     localStorage.removeItem("name");
     localStorage.removeItem("email");
     localStorage.removeItem("profilePic");
    })
    }
    
    REDUX부분입니다!
    
    store.js
    
    let isLogin = createSlice({
     name : 'isLogin',
     initialState : false,
     reducers : {
    setIsLogin(state) {
     state = !state
    }
    }
    });
    export let { setIsLogin } = isLogin.actions;
    
    함수 밖으로 옮겨서 사용하면 React Hook "useDispatch" cannot be called at the top level. 이런 오류가 뜹니당
    코드를 어떻게 바꿔줘야 할까요
    
    
    #38813

    codingapple
    키 마스터
    dispatch는 컴포넌트안에서 쓰면 됩니다 컴포넌트에서 저 함수 실행하고 dispatch도 하면 될듯요
    #38859

    전유진
    참가자
    해결완료입니다 감사합니다!
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠