인프런 커뮤니티 질문&답변

dubu777님의 프로필 이미지
dubu777

작성한 질문수

Next + React Query로 SNS 서비스 만들기

[Next 15 반영]useSearchParams와 프로필, /search 페이지

Search 페이지의 Tab컴포넌트 useSearchParams 부분 질문 있습니다.

작성

·

343

0

search 페이지의 Tab 컴포넌트에서 질문이 있습니다.

searchParams에 hot과 new가 전달되는 부분이 어딘지 모르겠어서 질문드립니다..
제 생각으로는 Tab 컴포넌트에서 인기, 최신 div를 클릭해서 값을 전달해야 할 것 같은데
해당 부분에서는 current useState만 변경하고 다른 변경은 없는 것 같습니다.
어느 부분에서 searchParams에 값을 전달해서, searchParams.get('q')로 값을 받아올수있는지 궁금합니다..

아래 코드 첨부드립니다!

"use client";

import style from "../search.module.css";
import { useState } from "react";
import { useRouter, useSearchParams } from "next/navigation";
export default function Tab() {
  const [current, setCurrent] = useState("hot");
  const router = useRouter();
  const searchParams = useSearchParams();
  const onClickHot = () => {
    setCurrent("hot");
    router.replace(`/search?q=${searchParams.get("q")}`);
  };

const onClickNew = () => {
    setCurrent("new");
    router.replace(`/search?${searchParams.toString()}&f=live`);
  };

  return (
    <div className={style.homeFixed}>
      <div className={style.homeTab}>
        <div onClick={onClickHot}>
          인기
          <div className={style.tabIndicator} hidden={current === "new"}></div>
        </div>
        <div onClick={onClickNew}>
          최신
          <div className={style.tabIndicator} hidden={current === "hot"}></div>
        </div>
      </div>
    </div>
  );
}

 

답변 2

1

searchParams는 현재 주소창에 기재되어있는 것 중 q= 으로되어있는 값을 가져옵니다.
저 값은SearchForm.tsx에 보면 router.push로 보내주고 있네요.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

searchParams에서 hot이냐 new냐를 구분하는 부분은 f=live뿐입니다. q는 검색을 할 때 생성되는 부분입니다. 현재 코드는 hot과 new를 전환하더라도 검색의 q를 유지하기 위함입니다.

dubu777님의 프로필 이미지
dubu777

작성한 질문수

질문하기