Grace
grace's dev_note
Grace
전체 방문자
오늘
어제
  • 분류 전체보기
    • FrontEnd
      • Next.js
      • React
      • ReactNativ..
      • Vue
    • Javascript
      • 러닝 자바스크립트
      • 모던 자바스크립트
    • CS
    • DataScienc..
      • Data Struc..
      • LeetCode
    • BackEnd
      • Express
      • Node.js
      • Nest.js
    • DevOps
      • Docker
    • 매일메일
    • 회고
    • 코드캠프

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Vue
  • tanstack
  • node.js
  • React Native
  • 함수
  • nest.js
  • 알고리즘
  • vitejs
  • postgres
  • Vue.js
  • 자바스크립트
  • Vite
  • vue-query
  • Express
  • 번들러
  • PostgreSQL
  • Vue3
  • javascript
  • pinia
  • backend

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Grace

grace's dev_note

FrontEnd/Next.js

Recoil로 State 관리하기

2022. 11. 30. 10:36

Recoil은 업데이트된 state 부분만 리렌더를 해줍니다.

Setting

//app.tsx 파일 
import {
  RecoilRoot,
  atom,
  selector,
  useRecoilState,
  useRecoilValue,
} from 'recoil';

function App() {
  return (
    <RecoilRoot>
        //RecoilRoot로 모든 컴포넌트를 묶어주세요
      <Component />
    </RecoilRoot>
  );
}

사용

Recoil에서는 Atom으로 state의 일부를 보여줍니다.
컴포넌트들은 자신이 필요한 Atom을 참조하고 있습니다. 따라서 자신이 참조하고 있는 Atom에 변화가 있으면 해당 atom을 참조하는 모든 컴포넌트에 리렌더링이 일어납니다.

// Atom
const textState = atom({
  key: 'textState', // state의 이름
  default: '', //초기값
});

아톰을 실제로 사용하기 위해서 useRecoil을 사용해야 합니다.

// TextInput 컴포넌트 
function TextInput() {
  const [text, setText] = useRecoilState(textState);

  const onChange = (event) => {
    setText(event.target.value);
  };

  return (
    <div>
      <input type="text" value={text} onChange={onChange} />
      <br />
      Echo: {text}
    </div>
  );
}

위와 같이 사용하면 textState를 참조하고 있는 모든 컴포넌트에서 리렌더가 일어납니다.

https://recoiljs.org/ko/docs/introduction/getting-started/Recoil은 업데이트된 state 부분만 리렌더를 해줍니다.

Setting

//app.tsx 파일 
import {
  RecoilRoot,
  atom,
  selector,
  useRecoilState,
  useRecoilValue,
} from 'recoil';

function App() {
  return (
    <RecoilRoot>
        //RecoilRoot로 모든 컴포넌트를 묶어주세요
      <Component />
    </RecoilRoot>
  );
}

사용

Recoil에서는 Atom으로 state의 일부를 보여줍니다.
컴포넌트들은 자신이 필요한 Atom을 참조하고 있습니다. 따라서 자신이 참조하고 있는 Atom에 변화가 있으면 해당 atom을 참조하는 모든 컴포넌트에 리렌더링이 일어납니다.

// Atom
const textState = atom({
  key: 'textState', // state의 이름
  default: '', //초기값
});

아톰을 실제로 사용하기 위해서 useRecoil을 사용해야 합니다.

// TextInput 컴포넌트 
function TextInput() {
  const [text, setText] = useRecoilState(textState);

  const onChange = (event) => {
    setText(event.target.value);
  };

  return (
    <div>
      <input type="text" value={text} onChange={onChange} />
      <br />
      Echo: {text}
    </div>
  );
}

위와 같이 사용하면 textState를 참조하고 있는 모든 컴포넌트에서 리렌더가 일어납니다.

https://recoiljs.org/ko/docs/introduction/getting-started/

저작자표시 비영리 변경금지 (새창열림)

'FrontEnd > Next.js' 카테고리의 다른 글

Third-Party Cookies Blocking과 Storage Access API  (0) 2022.11.30
Next.js와 호환이 잘 되는, SSR에 최적화된 스타일 컴포넌트, Emotion  (0) 2022.11.17
Shallow Routing  (0) 2022.11.02
    'FrontEnd/Next.js' 카테고리의 다른 글
    • Third-Party Cookies Blocking과 Storage Access API
    • Next.js와 호환이 잘 되는, SSR에 최적화된 스타일 컴포넌트, Emotion
    • Shallow Routing
    Grace
    Grace
    기술 및 회고 블로그

    티스토리툴바