카테고리 없음

Til (2023.02.09)

2023. 2. 9. 22:58

스팀게임 음성채팅 프로그램 개발중

 

메뉴가 옆에서 나오는 방식을 사용하려고 하는데

페이지를 밀면서 나오려고 한다.

fixed를 사용해서 하려고 하는데 페이지위에 떠있는 거라서 열면 페이지 위에있고 페이지가 밀리지 않는 문제가 있었다.

그래서 recoil로 전역에 메뉴 상태를 전달한후 메뉴가 열리면 styled-components에 상태를 Props로 줘 margin-left가 조정되는 방식을 사용했다.

 

열리는 페이지는 총 네개인데 각각 열리게 하기위해 처음엔 if문으로 5개의 조건을 걸었었는데 코드가 너무 길어져서 인자로 string을 recoil에 주는 방식으로 리팩토링 했다.

function Layout() {
  //레이아웃 종류
  const [layoutMenu, setLayoutMenu] = useRecoilState<String>(LayoutButton);

  const LayoutButtonOnClick = (i: string) => {
    if (layoutMenu === i) {
      setLayoutMenu("close");
    } else {
      setLayoutMenu(i);
    }
  };

  return (
    <>
      <SideBarDiv>
        {/* 프로필 */}
        <Profilebutton onClick={() => LayoutButtonOnClick("profile")}>
          Profile
        </Profilebutton>
        {/* 홈 */}
        <Homebutton>Home</Homebutton>
        {/* 게임검색 */}
        <GameSearchbutton onClick={() => LayoutButtonOnClick("gamesearch")}>
          gamesearch
        </GameSearchbutton>
        {/* 친구 */}
        <Friendbutton onClick={() => LayoutButtonOnClick("friend")}>
          friend
        </Friendbutton>
        {/* 친구검색 */}
        <FriendSearchbutton onClick={() => LayoutButtonOnClick("friendsearch")}>
          friendsearch
        </FriendSearchbutton>
        {/* 음성채팅 */}
        <VoiceTalkbutton onClick={() => LayoutButtonOnClick("voicetalk")}>
          voicetalk
        </VoiceTalkbutton>
      </SideBarDiv>
      {/* 메뉴 컴포넌트 */}
      <MenuOpenDiv layoutMenu={layoutMenu}>
        <Profile />
        <GameSearch />
        <Friend />
        <FriendSearch />
        <VoiceTalk />
      </MenuOpenDiv>
    </>
  );
}
저작자표시 (새창열림)
prdg
prdg
prdg
신정근 개발일지
prdg
전체
오늘
어제
  • 분류 전체보기 (89)
    • 프로젝트 (3)
    • 프로그래머스 (2)
    • 블록체인 (2)
    • 리액트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JavaScript
  • node.js
  • usemutation
  • Props
  • SafeAreaView
  • TODOLIST
  • touchableopacity
  • 프로그래머스
  • Node
  • 리액트
  • 구조분해할당
  • ReactQuery
  • react
  • ReactNative
  • socket.io
  • state
  • TypeScript
  • 블록체인
  • Recoil
  • Blockchain

최근 댓글

최근 글

hELLO · Designed By 정상우.
prdg
Til (2023.02.09)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.