Let's Study Coding

Welcome to Visit!!
Let's get it

웹 개발자로의 새로운 여정을 시작해 보겠습니다.

총 방문자
총 포스팅
오늘 방문자
000일 째 블로그 운영중

여러분들의 방문을
진심으로 환영합니다

웹 개발자로서, 다양한 개발 지식을 다루는
블로그를 만들어보겠습니다. 😃

최근 글

막 올라온 최신 포스팅을 구경해보세요 !

참고하는 웹사이트 목록 💻

필자가 자주 참고하는 웹사이트를 둘러보세요.

Img
2023. 2. 22. 22:45
[WebSite] 🖥️ 웹 개발을 할 때 자주 참고하는 사이트 모음.
목차 제가 웹개발을 할 때 자주 참고하는 사이트를 정리한 포스팅입니다. @Web's CSS 코드펜의 자료들 중 좋은 자료들을 모아 놓은 티스토리 블로그 사이트. 매우 유용한 자료가 많아서 애용하는 블로그다. @web's CSS 코드펜 레퍼런스 사이트입니다. wsss.tistor
더보기
Img
2023. 2. 13. 15:16
[WebSite] 🎨 유용한 무료 이미지 사이트 모음
목차 제가 주로 사용하는 또는 인터넷에서 찾은 유용한 무료 이미지 사이트를 모아서 정리한 포스팅입니다. Unsplash Unsplash는 200만개 이상의 완전 무료 고해상도 이미지를 제공하는 무료 이미지 사이트이다. 전 세계의 사진가들이 라이브러리에 사진을 제공하기
더보기
Img
2023. 2. 13. 15:01
[WebSite] 🖥️ 저작권 무료 목업 사이트 6곳 추천
포토샵, 일러스트를 이용한 디자인 작업을 할 때 로고나 웹, 패키지 등 디자이너들이 자신의 작업물을 더 업그레이드 하기 위하여 목업을 활용하고 있다. 오늘은 제가 주로 사용했던 무료 목업 사이트를 작성해보려고 한다. 1. Anthony Boyd Graphics Free Mockups
더보기
Img
2023. 2. 11. 20:33
[WebSite] 🌈 Gradient 사이트 모음.
목차 프론트엔드 웹개발을 하다 보면 Gradient를 이용하여 작업을 해야할 때가 많다. 문제는 Gradient 디자인을 할 때 단색으로 많은 톤을 잡지만 두 가지 이상을 사용할 때 조합이 어색하다면 전체적인 느낌이 살지 않을 수 있다. 하지만 조합이 잘된 그라데이션(Grada
더보기
Img
2023. 2. 11. 19:26
[WebSite] 🖥️ 유용한 SVG 사이트 모음
프론트엔드 작업을 하다보면 SVG를 사용하여 사이트를 만들어야 할 때가 생긴다. 그래서 어떤 유용한 SVG 사이트가 있는지를 알아볼 겸 자주 사용하는 SVG 사이트를 정리해서 작성해보려고 한다. 필자는 주로 7개의 SVG 사이트를 이용한다. 1. 부트스트랩(Bootstra
더보기

CSS 스타일링 🎨

웹 개발을 할 때 사용하는 CSS 사용방법을 확인해보세요.

Let's Write Message

Guest Book

블로그를 방문해주셔서 감사드립니다.
자유롭게 댓글 달아주세요 ~

Let's Choose Tag Box

Tag Page

원하시는 태그를 클릭해보세요.

Light Dev
Light Dev에서 공부한 내용을 정리합니다.

-

[Next.js] 🕹️ SWR 상태관리 라이브러리 사용법. 본문

[Next.js] 🕹️ SWR 상태관리 라이브러리 사용법.

Light9639

목차

    SWR은 무엇인가?

    SWR이란 “Stale-While-Revalidate”라는 HTTP 캐시 무효화 전략에서 유래된 데이터 페칭을 위한 리액트 라이브러리이다.


    SWR의 기본적인 작동은 우선 캐시(stale)에서 데이터를 불러오고, 검증을 위한 요청(revalidate)을 보내고, 마침내 최신 데이터로 업데이트하는 과정을 거친다. 또한 SWR을 사용하는 컴포넌트들은 지속적이고 자동적으로 데이터 업데이트가 이루어짐으로써 항상 최신 상태를 유지할 수 있게 된다.


    SWR의 대표적인 장점

    • 자동화가 간단하다.
    • 가볍고 빠르기 때문에 데이터의 업데이트 또한 빠르게 이루어져 reactive한 환경을 갖출 수 있다.
    • SSR(Server-Side-Rendering), SSG(Static-Site-Generation), ISR(Incremental-Static-Generation) 환경에서 모두 사용할 수 있다.
    • 최근에 나온 React 18의 Suspense 등의 기능들과 호환된다.

    설치 방법

    다른 라이브러리들과 마찬가지로, 사용하고자 하는 프로젝트 폴더 안에서 터미널에 설치 코드를 입력해주면 된다.

    Shell
    yarn add swr
    

    혹은

    Shell
    npm install swr
    

    기본적인 사용법

    key, fetcher, data, error

    JavaScript
    const { data, error } = useSWR(key, fetcher);
    

    SWR을 사용할 때에는 기본적으로 4가지만 알면 되는데, 바로 예시에 있는 key, fetcher, data, error 이다.


    key

    요청을 보낼 주소를 의미한다.

    JavaScript
    const { data, error } = useSWR("/api/data", fetcher);
    

    에서 '/api/data'에 해당하는 부분이다.


    fetcher

    SWR의 핵심적인 API로써, key를 받아 데이터를 반환하는 비동기 함수이다. 이 fetcher에는 데이터 페칭에 사용되는 Axios, GraphQL 등 어떠한 라이브러리든지 사용이 가능하다.

    JavaScript
    const fetcher = (url) => fetch(url).then((res) => res.json());
    
    const { data, error } = useSWR(key, fetcher);
    

    이런 식으로 fetcher 함수를 선언하고 사용할 수도 있고,

    JavaScript
    const { data, error } = useSWR(key, (url) => {
      fetch(url).then((res) => res.json());
    });
    

    이런 식으로 아예 useSWR 함수 내에 적어주어도 된다.

     

    전역으로 fetcher 설정하기

    매번 fetcher를 선언해주는 것은 번거로울 수 있다. 이 번거로움을 해소하기 위해 SWR은 SWRconfig 컨텍스트를 통해 전역 fetcher를 설정할 수 있게 해준다.

    JavaScript
    <SWRConfig value={options}>
      <Component />
    </SWRConfig>
    

    이렇게 SWRConfig로 감싸주는 컴포넌트에선 value에 전달하는 options의 내용이 전역 설정으로써 전달된다.

    이를 활용하면 다음과 같이 fetcher를 전역으로 설정할 수 있다.

    JavaScript
    function App() {
      const options = {
        fetcher: (resource, init) =>
          fetch(resource, init).then((res) => res.json()),
      };
      return (
        <SWRConfig value={options}>
          <Home />
        </SWRConfig>
      );
    }
    

    이로써 <Home /> 컴포넌트 안에서 사용 되는 모든 useSWR은 제공된 fetcher를 사용하게 된다. 즉,

    JavaScript
    function Home() {
      const { data: first } = useSWR(firstKey);
      const { data: second } = useSWR(secondKey);
    }
    

    이 두 개의 useSWR fetcher를 작성하지 않아도 상술한 fetcher를 사용하고 있는 것이다.


    data

    useSWR에 의해 반환된 데이터를 의미한다.


    error

    데이터를 패칭하는 과정에서 오류가 발생할 시 반환된다.


    사용 예시

    서버로부터 사용자의 데이터를 가져와 화면에 출력해 주는 예시이다.

    JavaScript
    import useSWR from "swr";
    
    const fetcher = (url) => fetch(url).then((res) => res.json());
    
    function Profile() {
      const { data, error } = useSWR("/api/user/123", fetcher);
    
      if (error) return <div>failed to load</div>;
      if (!data) return <div>loading...</div>;
    
      return <div>Welcome, {data.name}!</div>;
    }
    

    이렇게 fetcher를 선언하고, data error를 받아온 후, 에러와 데이터를 활용하여 이름을 출력할 수 있다.


    잘못된 내용이 있으면 언제든 피드백 부탁드립니다.

    이 글이 좋으셨다면 구독 & 좋아요

    여러분의 구독과 좋아요는
    저자에게 큰 힘이 됩니다.


    Light Dev
    Light dev
    웹 개발자로의 새로운 여정을 시작해 보겠습니다. 조언해주실 부분이 있으시면 언제든 이메일 부탁드립니다.

    사이트를 방문해 주셔서 감사합니다

    만일 도움이 되셨으면 공감과 구독 버튼 클릭 부탁드립니다.
    추가적인 질문사항이나 이해가 안되는 점이 있으면 댓글로 적어주세요.

      Light9639
      티스토리에 팔로잉