[Next + React Query로 SNS 서비스 만들기] 섹션 2 정리

2024. 8. 5. 11:06·NOTE

useSelectedLayoutSegment();

최상위 세그먼트만 나온다 compose/tweet 인 세그먼트에서 tweet만 나옴
클라이언트 컴포넌트에서 작동함 

useSelectedLayoutSegments();

compose/tweet 에서 여러개의 세그먼츠가 배열로 나옴 ['compose', 'tweet']

 

참고
https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segment

https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segments

 

 

훅을 사용하거나, 이벤트 리스너가 있는경우는 클라이언트 컴포넌트로 빼주는게 좋다 .

참고

https://nextjs.org/docs/app/building-your-application/rendering/server-components

https://nextjs.org/docs/app/building-your-application/rendering/client-components

 

@media(prefers-color-scheme: dart) - 다크모드

참고

https://www.daleseo.com/css-prefers-color-scheme/

 

backdrop-filter를 사용하면 블러처리 가능

https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter

 

Dayjs - 날짜 관련된 플러그인

얼마나 시간이 경과되었는지 등 다양한 기능이 있다.

플러그인처럼 원하는기능 import 해서 사용하면 된다.

import relativeTime from 'dayjs/plugin/releativeTime';
import dayjs/locale/ko

dayjs.extend(relativeTIme);
dayjs.locale('ko');



classNames 플러그인

클래스를 합성 할때 사용하는 플러그인

배열로 써도되고, 풀어써도된다.

조건에 맞는 클래스를 합성해 준다.

const isOpen = true;
classNames('one', isOpen && 'open'); // = 'one open'

const isOpen = false;
classNames('one', isOpen ? 'open' : 'close'); // = 'one close'



usePathname

훅이기때문에 client component여야함

현재 패스 가져올 수 있는 훅

import {usePathname} from 'next/navigation';

const pathname = usePathname()



useSearchParams

client 에서는 쿼리스트링을 가져올수있다.

has(), getAll(), keys(), values(), entries(), forEach(), toString() 메소드 들이 있다.

'use client'

import { useSearchParams } from 'next/navigation'

export default function SearchBar() {
  const searchParams = useSearchParams()

  const search = searchParams.get('search')

  // URL -> `/dashboard?search=my-project`
  // `search` -> 'my-project'
  return <>Search: {search}</>
}

// 지금 쿼리스트링 다 가져오기 할때 
router.replace(`/search?${searchParams.toString()}&f=live`)

 

서버컴포넌트에서는 props로 searchParams를 가져올수 있다.

Next.js 에서는 URL의 search params를 프롭으로 자동 전달해준다.

export default function Home({ searchParams }) {
    console.log(searchParams);
    return <div></div>
}



useRouter

라우터 변경시 사용되는 훅

push, replace, refresh, prefetch, back, forward 메소드가 있다.

앱라우터에서는 next/router가 아닌 next/navigation import를 사용한다.

'use client'

import { useRouter } from 'next/navigation'

export default function Page() {
  const router = useRouter()

  return (
    <button type="button" onClick={() => router.push('/dashboard')}>
      Dashboard
    </button>
  )
}

 

디폴트값으로 새로운 페이지 이동시 스크롤 top으로 되어있는데 비활성화 시키고 싶다면 'false'

 <button
      type="button"
      onClick={() => router.push('/dashboard', { scroll: false })}
    >
      Dashboard
    </button>

 

 

서버컴포넌트가 클라이언트 컴포넌트 자식컴포넌트로 가야하는경우

import 해서 사용하면안되고, children으로 받아서 사용하면 된다.

import로 사용하는 경우 서버컴포넌트가 클라이언트 컴포넌트로 변경된다.


onclick 캡쳐링

클릭이벤트랑 , a태그랑 겹치는경우 캡쳐링을 사용해서 해결할수있다.

버블링 - 이벤트가 시작한 곳에서 상위 dom으로 이벤트가 전파되는 것, 거의 일어난다

캡쳐링 - 버블링과는 반대로 이벤트가 아래로 내려가는 것, 보기 힘들다.

참고

https://ko.javascript.info/bubbling-and-capturing

 

 

에디터에서 export 옴기는 기능이 잇다.

다른파일로 변경되면 import 도 다 변경해준다.


YAGNI 야그니

you aint gonna need it

KISS, YAGNI, DRY (불필요하게, 필요할때, 반복하지마라)

소프트 웨어 개발 3대원칙

https://blog.naver.com/finway/221163007357

 

facker npm 플러그인

더미데이터 쉽게 넣어주는 플러그인

이미지, 텍스트 랜덤으로 생성할 수 있다.

const photo = {
    imageId: 1,
    link: faker.image.urlLoremFlickr(),
    Post: {
        content: faker.lorem.text()
    }
}

faker.image.avatar()

 

참고

https://www.npmjs.com/package/@faker-js/faker

 

 

ServerComponent params props

서버컴포넌트에서 params 라고 가져올수잇다.

[productId]/image/[imageId] 괄호안의 값,slug 값을 가져올 수 있다.

// [productId]/image/[imageId]
export default function Home({ params }) {
    console.log(params.productId);
        console.log(params.imageId);
    return <div></div>
}


패러렐 라우트 모달만들때 페이지가 있는경우마다 default 를 해줘야 오류가 안난다.

 

Array.at()

음수로 배열의 맨뒤에서 조회가 가능

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/at

'NOTE' 카테고리의 다른 글

[Next + React Query로 SNS 서비스 만들기] 섹션 3-1 정리 (msw, server-action, next-auth)  (0) 2024.08.24
Next serverActions  (0) 2024.08.10
[Next + React Query로 SNS 서비스 만들기] 섹션 1 정리  (0) 2024.07.21
[Next + React Query로 SNS 서비스 만들기] 섹션 0정리  (0) 2024.07.21
css로 부모선택자 선택하기  (0) 2024.07.04
'NOTE' 카테고리의 다른 글
  • [Next + React Query로 SNS 서비스 만들기] 섹션 3-1 정리 (msw, server-action, next-auth)
  • Next serverActions
  • [Next + React Query로 SNS 서비스 만들기] 섹션 1 정리
  • [Next + React Query로 SNS 서비스 만들기] 섹션 0정리
ssund
ssund
  • ssund
    ssund의 기술블로그
    ssund
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • TECH (22)
      • NOTE (40)
      • DAILY (7)
      • javascript (1)
      • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • TECH
    • NOTE
    • DAILY
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    웹브라우저구성
    함수와 메서드차이
    배열요소순서
    커머스프로젝트
    git배포
    TypeScript
    react state management
    d.ts
    reduxtoolkit
    타입스크립트
    React
    JavaScript
    slidesPerGroup
    styled-components
    reat-head
    Array.sort()
    theme-provider
    global-style
    call signatures
    redux
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ssund
[Next + React Query로 SNS 서비스 만들기] 섹션 2 정리
상단으로

티스토리툴바