230217 팀프로젝트 9

이셀·2023년 2월 19일
0

오늘은 navigate hooks를 사용하는 것을 했다.
보통은 onclick으로 빠지는 방법으로 하다보니 엄청 헤맸다;;
그래서 다른 분들에게 조언을 구했는데
1. link to 사용
2. useNavigate 사용
을 권장받았다.

1번의 경우 시도해봤지만 실패했고....ㅎㅎ
그래서 2번인 useNavigate를 사용했다.

const navigate = useNavigate();
  const handeMoveToDetail = () => {
  // 상세페이지로 빠지는 navigate 함수
    navigate(`/matedetail/${item.id}`);
  };
  
  return (
  // 전체로 걸어줘서 카드를 누를 경우 상세페이지로 빠지게 설정
    <PostCard onClick={handeMoveToDetail}>
      <BookmarkIconBox>
        <Location>{item.partyLocation}</Location>
        <span>{item.bookmark}</span>
        <BsBookmarkHeart cursor="pointer" size="20px" />
      </BookmarkIconBox>

      <PostBox>
        <PostTitle>{item.partyPostTitile}</PostTitle>
        <PostDesc>{item.partyDesc}</PostDesc>
        <TechStackIcon>
          {item.partyStack.map((item, idx) => (
            <Tag key={idx} style={{ fontSize: 12 }} color="purple">
              {item}
            </Tag>
          ))}
        </TechStackIcon>
      </PostBox>

      <PartyStatusBox>
        <RecruitingBox>
          <Recruiting>
            {item.partyIsOpen === true ? (
              <span style={{ color: 'green' }}>모집 중</span>
            ) : (
              <span style={{ color: 'red' }}>모집완료</span>
            )}
          </Recruiting>
        </RecruitingBox>
        <HeadCountBox>
          <BsPeopleFill size="15px" />
          <HeadCount>{`: 1 / ${item.partyNum}`}</HeadCount>
        </HeadCountBox>
      </PartyStatusBox>

      <HorizontalLine />

      <PostInfo>
        <ProfileBox>
          <ProfileImage></ProfileImage>
          <NickName>{item.nickName}</NickName>
        </ProfileBox>
        <InfoBox>
          <GrFormView size="24px" />
          <PostView>12</PostView>
          <FaRegCommentDots size="15px" />
          <PostComments>3</PostComments>
        </InfoBox>
      </PostInfo>
    </PostCard>
  );

너무 쉽지 않나? 싶을 정도다
이번에 내장 hooks인 useNavigate를 알게 됐는데...
너무 유용하다!
넘겨줘야하는 페이지들이 너무 많은데 useNavigate쓰면 다 해결되서...ㅎㅎㅎㅎㅎ!!!

profile
프론트엔드 개발자! 현재 SQL 뽀개는중;)

0개의 댓글