Hashtag 게시글 불러오기

트위터나 인스타를 하다보면 해시태그를 누르면 같은 해시태그를 가진 게시글들이 주르륵 나오는 것 아시죠??

이번에는 그 기능을 구현해 보겠습니다!

일단 컴포넌트에서 Hashtag를 누르면 라우팅을 통해 해당 링크로 넘어가주는 기능을 구현했던거

기억이 나실까요?? (안날것이라고 생각합니다..)

클릭시 라우팅

import React from "react";
import Link from "next/link";

export default function PostCardContent({ postData }) {
  return (
    <div>
      {/* //정규표현식 */}
      {postData.split(/(#[^\s#]+)/g).map((v, i) => {
        if (v.match(/(#[^\s#]+)/g)) {
          return (
            <Link href={`/hashtag/${v.slice(1)}`} key={i}>
              {/* 인덱스로 키를 지정해줬다 바뀔일이 없어서 */}
              <a>{v}</a>
            </Link>
          );
        }
        return v;
      })}
    </div>
  );
}

/hashtag/모시기 이 링크로 넘어가기 때문에 pages폴더에도

pages/hashtag/[tag].js

이런식으로 다이나믹 라우팅을 해줄 것입니다.

router.query.tag 에 데이터가 담겨 있으니 비구조화 할당을 통해 tag를 꺼내주고, infiniteScrolling에 data로 넣어주었으며,

서버사이드 렌더링시에도 context.params.tag로 action에 data로 담아주었습니다.

Redux 상태 재활용

자 이제 Reducer를 작성해 줄 것인데요, 솔찍이 너무 많아요.. 상태가..

물론 리팩터링을 해주어도 되기는 하지만, 일단 상태가 많아봤자 좋을게 없으니 재활용을 해보도록 하죠 !!

음.. 페이지 로드시 처음 게시글을 가져오는 것과, hashtag로 처음 게시글을 불러오는 것이 상태가 다를 필요가 없어보입니다. 같은 기능을 수행하는 것이고, 둘다 mainPost라는 배열에 데이터를 넣어주니까요.

  • 액션타입만 생성해준뒤 ,

  • 리듀서 안에서는 기존 사용하던 상태를 재활용 해주었습니다.

다음은 Saga입니다

서버 라우터

자 딱 아까 리듀서에서 재활용한것처럼 첫페이지 게시글 불러오기와 기능이 비슷하기 때문에

posts.js라우터에서 복붙을 먼저 해주세요.

그리고 hash태그가 같은 게시글을 찾을 수 있도록 만들어 주는 것입니다.

routes/hashtag.js를 다음과 같이 만들어주세요

주석을 꼼꼼히!

Last updated

Was this helpful?