πŸ“±λ„€λΉ„κ²Œμ΄μ…˜ λ°” μ œμž‘

μ‘°μ€€ν˜•Β·2025λ…„ 3μ›” 21일
0

CHOP!

λͺ©λ‘ 보기
4/20
post-thumbnail

πŸ” 문제 μ •μ˜

ν”„λ‘œμ νŠΈ 초기 λ‹¨κ³„μ—μ„œ μ‚¬μš©μžλ“€μ΄ μ•± λ‚΄μ—μ„œ μ†μ‰½κ²Œ 이동할 수 μžˆλ„λ‘ λ„€λΉ„κ²Œμ΄μ…˜ λ°”λ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν–ˆλ‹€. μ—¬λŸ¬ 화면을 μ˜€κ°€λŠ” μ•±μ˜ νŠΉμ„±μƒ, 직관적이고 μ‚¬μš©ν•˜κΈ° μ‰¬μš΄ λ„€λΉ„κ²Œμ΄μ…˜ λ°”λŠ” 맀우 μ€‘μš”ν•œ λΆ€λΆ„μ΄μ—ˆκΈ° λ•Œλ¬Έμ—, 이λ₯Ό 잘 κ΅¬ν˜„ν•˜λŠ” 것이 ν•΅μ‹¬μ΄μ—ˆλ‹€.

πŸ’» μ½”λ“œ 리뷰

μ΄λ²ˆμ—λŠ” ν•˜λ‹¨ λ„€λΉ„κ²Œμ΄μ…˜ λ°”λ₯Ό κ΅¬ν˜„ν•œ μ½”λ“œλ₯Ό 리뷰해보겠닀. μ½”λ“œμ˜ μ£Όμš” κΈ°λŠ₯은 화면을 μ „ν™˜ν•  λ•Œ ν™œμ„±ν™”λœ μ•„μ΄μ½˜μ„ μ‹œκ°μ μœΌλ‘œ ꡬ뢄할 수 μžˆλ„λ‘ ν•˜λŠ” 것이닀.

import React, { useState } from "react"
import home from '../../assets/home.png'
import community from '../../assets/community.png'
import sell from '../../assets/sell.png'
import chatting from '../../assets/chatting.png'
import profile from '../../assets/profile.png'
import { Link } from "react-router-dom"
import './BottomNav.css'


const BottomNav = () => {
    const [activeNav, setActiveNav] = useState(1);  // ν™œμ„±ν™”λœ λ„€λΉ„κ²Œμ΄μ…˜ μ•„μ΄ν…œ μƒνƒœ 관리

    return (
        <nav className="wrapper">
            <Link to="/home" className="nav-link" onClick={() => setActiveNav(1)}>
                <div>
                    <img src={home}
                        className={activeNav === 1 ? "nav-item active" : "nav-item"}
                        style={{ width: '30%', height: 'auto' }} />
                </div>
            </Link>
            <Link to="/community" className="nav-link" onClick={() => setActiveNav(2)}>
                <div>
                    <img src={community}
                        className={activeNav === 2 ? "nav-item active" : "nav-item"}
                        style={{ width: '30%', height: 'auto' }} />
                </div>
            </Link>
            <Link to="/sell" className="nav-link" onClick={() => setActiveNav(3)}>
                <div>
                    <img src={sell}
                        className={activeNav === 3 ? "nav-item active" : "nav-item"}
                        style={{ width: '30%', height: 'auto' }} />
                </div>
            </Link>
            <Link to="/chatting" className="nav-link" onClick={() => setActiveNav(4)}>
                <div>
                    <img src={chatting}
                        className={activeNav === 4 ? "nav-item active" : "nav-item"}
                        style={{ width: '30%', height: 'auto' }} />
                </div>
            </Link>
            <Link to="/profile" className="nav-link" onClick={() => setActiveNav(5)}>
                <div>
                    <img src={profile}
                        className={activeNav === 5 ? "nav-item active" : "nav-item"}
                        style={{ width: '30%', height: 'auto' }} />
                </div>
            </Link>
        </nav>
    );
};
export default BottomNav;

✨ μ•Œκ²Œ 된 점

useStateλ₯Ό μ‚¬μš©ν•΄ ν˜„μž¬ ν™œμ„±ν™”λœ λ„€λΉ„κ²Œμ΄μ…˜ ν•­λͺ©μ„ 관리할 수 μžˆμ—ˆλ‹€. μ΄λŠ” μ•±μ—μ„œ μ‚¬μš©μžκ°€ μ–΄λŠ 화면에 μžˆλŠ”μ§€ μ‰½κ²Œ 좔적할 수 μžˆλ„λ‘ ν•΄μ£Όμ—ˆλ‹€.
각 λ„€λΉ„κ²Œμ΄μ…˜ ν•­λͺ©μ€ Link μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ λΌμš°νŒ…μ„ κ΅¬ν˜„ν–ˆμœΌλ©°, μ•„μ΄μ½˜μ΄ 클릭될 λ•Œλ§ˆλ‹€ setActiveNav ν•¨μˆ˜λ‘œ ν™œμ„±ν™”λœ ν•­λͺ©μ„ λ³€κ²½ν–ˆλ‹€.
CSS둜 active 클래슀λ₯Ό μ μš©ν•˜μ—¬, μ–΄λ–€ ν•­λͺ©μ΄ ν˜„μž¬ μ„ νƒλ˜μ—ˆλŠ”μ§€ μ‹œκ°μ μœΌλ‘œ ꡬ뢄할 수 있게 ν–ˆλ‹€. 이 뢀뢄이 μ‚¬μš©μž κ²½ν—˜μ„ λ†’μ—¬μ£Όμ—ˆλ‹€.

πŸ”„ μ§€κΈˆ μƒκ°ν–ˆμ„ λ•Œ κ°œμ„ ν•  점

동적 μŠ€νƒ€μΌλ§: 각 μ•„μ΄μ½˜μ˜ μŠ€νƒ€μΌμ„ style 속성 λŒ€μ‹ , styled-components둜 κ΄€λ¦¬ν•˜λ©΄ 더 μœ μ—°ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•œ μ½”λ“œκ°€ 될 것 κ°™λ‹€. ν˜„μž¬λŠ” 각각의 μ•„μ΄μ½˜μ— λŒ€ν•΄ 일일이 μŠ€νƒ€μΌμ„ λ„£κ³  μžˆλŠ”λ°, styled-componentsλ₯Ό ν™œμš©ν•˜λ©΄ μ½”λ“œ 쀑볡을 쀄일 수 μžˆλ‹€.

⚑ 결둠

λ„€λΉ„κ²Œμ΄μ…˜ λ°”λŠ” μ‚¬μš©μž κ²½ν—˜μ—μ„œ μ€‘μš”ν•œ 역할을 ν•œλ‹€. 이번 κ΅¬ν˜„μ„ 톡해 기본적인 κΈ°λŠ₯은 잘 μž‘λ™ν–ˆμ§€λ§Œ, ν–₯ν›„ 더 λ‚˜μ€ μ½”λ“œ ꡬ쑰와 μ ‘κ·Όμ„± κ°œμ„ μ„ 톡해 보닀 완성도 높은 λ„€λΉ„κ²Œμ΄μ…˜ λ°”λ₯Ό λ§Œλ“€ 수 μžˆμ„ 것이닀.

profile
코린이

0개의 λŒ“κΈ€