[ gproro-shop-app] 로그인여부로 분기처리 with redux

2024. 11. 14. 18:23·⛲ 프로젝트/👖gproro-shop-app

 

 

장바구니 아래에 로그인 되어있다면 계산하기 버튼만 , 

로그인 하지 않았다면 로그인 버튼이 보이게 하고싶다. 

 

 

 

 

import React, { useEffect } from 'react'
import { useAppDispatch, useAppSelector } from '../../../hooks/redux'
import styles from './Checkout.module.scss'
import { Link } from 'react-router-dom';
import { getTotalPrice } from '../../../store/cart/cart.slice';
import { useAuth } from '../../../hooks/useAuth';

//장바구니 하단에 합계랑 로그인버튼
const Checkout = () => {
    const cart = useAppSelector((state)=> state.cart);
    const dispatch = useAppDispatch();

    useEffect(()=>{
        dispatch(getTotalPrice());
    },[])


    ⭐const {isAuth} = useAuth();

  return (
    <div className={styles.checkout}>
        <div>
            <p>
                {" "}
                <span>합계 : </span> ${cart.totalPrice.toFixed(2)}
            </p>

            ⭐ {isAuth?
            <button className={styles.checkout_button}
            onClick={() => sendOrder()}>
                계산하기
            </button>:
             <Link className={styles.checkout_button} to={"/login"}>
             로그인
         </Link>
             }
           
        </div>
    </div>
  )
}

export default Checkout

 

 

 useAuth를 만들려면

로그인이 되어있는지 체크하는 hooks를 생성하고,

 

import { useAppSelector } from "./redux";

export function useAuth(){
    const{id,email,token} = useAppSelector((state) => state.user);
    return {
        isAuth:!!email,  // email이 존재하면 true, 없으면 false
        email,
        id,
        token,
    }
}

 

useAuth의 반환 객체는 isAuth, email, id, token으로 구성되어 있으며, 이를 통해 로그인 여부와 사용자 정보를 동시에 관리할 수 있다.

 

 

다시 checkout 컴포넌트로 와서 

 
{isAuth ? (
          <button
            className={styles.checkout_button}
            onClick={() => sendOrder()}
          >
            계산하기
          </button>
        ) : (
          <Link className={styles.checkout_button} to={"/login"}>
            로그인
          </Link>
        )}

 

useAuth를 호출하여 isAuth 값을 확인하고, 이 값에 따라 다른 버튼을 렌더링한다.

 

 

 

로그인 하고 유저가 state에 들어가면 "계산하기" 버튼이 보이는것을 확인할 수 있다. 

'⛲ 프로젝트 > 👖gproro-shop-app' 카테고리의 다른 글

[gproro-shop-app] 리덕스 타입스크립트 마이그레이션하기  (0) 2024.11.15
[gproro-shop-app] mockAPI 로 서버 요청 보내기  (0) 2024.11.14
[gproro-shop-app] 장바구니 기능 with Redux  (0) 2024.11.14
[gproro-shop-app] 카테고리별 데이터 가져오기 + 스켈레톤 UI  (0) 2024.11.12
[gproro-shop-app] product 데이터가져오기 with Redux thunk  (0) 2024.11.12
'⛲ 프로젝트/👖gproro-shop-app' 카테고리의 다른 글
  • [gproro-shop-app] 리덕스 타입스크립트 마이그레이션하기
  • [gproro-shop-app] mockAPI 로 서버 요청 보내기
  • [gproro-shop-app] 장바구니 기능 with Redux
  • [gproro-shop-app] 카테고리별 데이터 가져오기 + 스켈레톤 UI
gprorogpfus
gprorogpfus
:- >
  • gprorogpfus
    gpfusdldks
    gprorogpfus
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 🎭JavaScript (2)
      • 👚 CSS (1)
      • ⚛️ React (13)
      • 🌃 Next.js (5)
        • 🔜 next.js-study (3)
      • 🥏TypeScript (10)
      • 🏴알고리즘 (2)
      • 🌴트러블슈팅 (3)
      • ⛲ 프로젝트 (6)
        • 👖gproro-shop-app (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    Redux
    GIT
    TypeScript
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gprorogpfus
[ gproro-shop-app] 로그인여부로 분기처리 with redux
상단으로

티스토리툴바