[DAY - 93] #3 개인프로젝트 '오늘 하날'

2023. 7. 14. 21:10·🔥 부트캠프-웹 개발 🔥/오늘하날(개인프로젝트)

1) 사진에 장소 표시

오늘 하날 카테고리의 사진이 출력될 때 사진의 장소가 같이 출력되도록 추가했다.
 

    return (
        <li>
            <img src={images} alt={authorAcountId} />
            <div className='loaction'>
                <SlLocationPin />
                <div className='loactionCityGu'>
                    <span>{loactionCity}</span>
                    <span>{loactionGu}</span>
                </div>
            </div>
        </li>
    );

 

 

 

2) 업로드 날씨 이미지로 변경

 
날씨 창에 텍스트가 아닌 GIF로 현재 날씨가 출력되고 온도는 오른쪽에 출력된다.
아직 날씨 GIF들을 구하지 못 해서 비 만 출력된다.
 

        .weather {
            display: flex;
            font-size: 5vw;
            justify-content: flex-end;
            background: none;
            background-image: url('images/weather/rain.gif');
            background-repeat: no-repeat;
            background-position: 0 70%;
        }

 

3) 내 주면 CSS, select option 추가

 
상단에 현재 위치의 날씨와 온도, 그리고 현재 위치를 나타내 주고 현재 위치를 재설정할 수 있는 버튼을 추가했다.
또한 다른 지역의 사진을 보고 싶을 땐 select의 option을 변경하면 된다.
select의 value를 받아 날씨와 위치가 변하며 사진도 해당 위치의 사진이 출력된다.
 

                <div className='selectList'>
                    <select name="sido" value={selectedSido} onChange={handleSidoChange}>
                        {area0.map((sido, index) => (
                            <option key={index} value={sido}>{sido}</option>
                        ))}
                    </select>
                    <select name="gugun" value={selectedGugun} onChange={handleGugunChange} disabled={selectedSido === ''}>
                        <option value="">구/군 선택</option>
                        {selectedSido !== '' && eval(`area${area0.indexOf(selectedSido)}`).map((gugun, index) => (
                            <option key={index} value={gugun}>{gugun}</option>
                        ))}
                    </select>
                </div>

 

4) 로그인/회원가입 CSS

 

 

 

5) 회원가입 구현

 
회원가입 시 미입력 검증은 Join 컴포넌트에서 직접 하고 user에 담아 넘겨준다.
acountSlice에서 user를 받아 join함수를 실행하면 아이디와 닉네임의 중복검사를 하게 된다.
중복검사까지 성공하면 onJoin 상태변수가 true로 변경되고, navigate를 이용해 /info 페이지로 넘어가게 된다.
 

join(state, action) {
            const { loginId, loginPw, nickname } = action.payload;

            const isExistingId = state.acount.some((item) => item.loginId === loginId);
            const isExistingNickname = state.acount.some((item) => item.nickname === nickname);

            if (isExistingId) {
                alert('이미 존재하는 아이디입니다.');
                return;
            } else if (isExistingNickname) {
                alert('이미 존재하는 닉네임입니다.');
                return;
            } else {
                const newAccount = {
                    loginId,
                    loginPw,
                    nickname,
                    acountId: state.acount.length + 1,
                    treeType: '밤나무',
                    treeLevel: 1
                }
                state.acount.push(newAccount)
                state.onLogin = true;
                state.onJoin = true;
                state.currentAcount = newAccount;
                localStorage.setItem('localOnLogin', true);
                localStorage.setItem('localOnJoin', true);
                localStorage.setItem('localCurrentAcount', JSON.stringify(state.currentAcount));
            }
        },
const onSubmit = e => {
        e.preventDefault();
        localStorage.setItem('localOnJoin', false);
        if (!loginId) {
            alert('아이디를 입력하세요');
            return;
        } else if (!loginPw) {
            alert('비밀번호를 입력하세요');
            return;
        } else if (!nickname) {
            alert('닉네임을 입력하세요');
            return;
        } else if (loginPw === !loginPwCheck) {
            alert('비밀번호가 동일하지 않습니다')
            return;
        } else {
            dispatch(join(user));
        }
    }
    useEffect(() => {
        if (acount.onJoin) {
            navigate('/info');
        }
    }, [acount.onJoin, navigate]);

 
 

6) 내 정보 CSS

'🔥 부트캠프-웹 개발 🔥/오늘하날(개인프로젝트)' 카테고리의 다른 글
  • [DAY - 95] #5 개인프로젝트 '오늘 하날'
  • [DAY - 94] #4 개인프로젝트 '오늘 하날'
  • [DAY - 92] #2 개인프로젝트 '오늘 하날'
  • [DAY - 91] #1 개인프로젝트 '오늘 하날'
Yeonhub
Yeonhub
✨ https://github.com/yeonhub 📧 lsy3237@gmail.com
  • Yeonhub
    비 전공자의 Be developer
    Yeonhub
  • 전체
    오늘
    어제
    • 전체보기 (169)
      • 🔍 Tech 🔍 (19)
        • Front-End (11)
        • Back-End (4)
        • AI (1)
        • Server (1)
        • Etc (2)
      • 💡 원티드 프리온보딩 챌린지 💡 (14)
        • PRE-ONBOARDING_AI (11월) (1)
        • PRE-ONBOARDING_FE (2월) (2)
        • PRE-ONBOARDING_FE (1월) (2)
        • PRE-ONBOARDING_FE (12월) (9)
      • 🔥 부트캠프-웹 개발 🔥 (118)
        • HTML5 (7)
        • CSS3 (21)
        • JavaScript (27)
        • JavaScript_advanced (9)
        • React (24)
        • Next (1)
        • MYSql (5)
        • Node (5)
        • 오늘하날(개인프로젝트) (12)
        • 이젠제주투어(팀프로젝트) (7)
      • 💻 CS 💻 (1)
        • 알고리즘 (1)
      • ⚡ 코딩테스트 ⚡ (11)
        • JavaScript (11)
      • 📚 Books 📚 (6)
        • 클린 아키텍처 (2)
        • 인사이드 자바스크립트 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    python node
    react native admob
    expo node fcm
    react vite
    프론트엔드 테스트코드
    node crontab
    expo fcm push
    node fcm
    php node
    expo 길찾기
    react native analytics
    react native bottom sheet
    javascript fcm
    node cron
    라스콘4
    expo google map
    expo 지도
    라스콘
    react native firebase analytics
    Node
    컴파운드 컴포넌트 패턴
    node.js fcm
    expo deep linking
    expo fcm
    bottom sheet
    react native expo fcm
    expo admob
    rn bottom sheet
    rn admob
    expo map
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Yeonhub
[DAY - 93] #3 개인프로젝트 '오늘 하날'
상단으로

티스토리툴바