[리액트] 상태관리 라이브러리 Recoil

hoonie·2021년 8월 22일
0

리액트

목록 보기
1/3
post-thumbnail

안녕하세요. 이번에는 facebook에서 만들었으며, 최근 점유율이 많이 올라가고 있는 상태관리 라이브러리 recoil에 대해 알아보겠습니다.

Recoil 특징

  • redux 의 store로 중앙집중으로 상태값을 관리하는 것이 아니라 atom이란 메서드로 원자식으로 상태를 관리 할 수 있다.
  • 순수함수인 selectors를 거쳐 컴포넌트에 전해주는 data-flow이다.
  • atoms는 컴포넌트가 구독할 수 있는 상태의 단위이다.
  • selectors는 atoms 상태값을 동기 또는 비동기 방식을 통해 변환시킨다.
const testReocoilState = atom({
  key: 'testReocoilState',
  default: [],
});
  • 이와 같이 atom에 고유한 키값과 기본 밸류 값을 작성하여 고유의 저장소를 만든다.
  const [recoilState, setRecoilState] = useRecoilState(testReocoilState);
  • useRecoilState 훅을 사용하여 atom을 이용하여 만든 상태값을 recoilState에 넣을 수 있다.
  • setRecoilState 을 이용하여 testReocoilState 키 값을 가진 상태값을 변경할 수 있다.
  • 변경이 일어나면 해당 atom을 구독하고 있는 컴포넌트들에 리렌더링이 발생하여 업데이트가 일어난다
const selecotrTestReocoilState = selector({
  key: 'selecotrTestReocoilState',
  get: ({get}) => {
    const recoilState = get(recoilState);

    return recoilState.length;
  },
});
  • selector 순수함수를 이용하여 입력값을 계산하여 출력값을 보여줄 수 도 있습니다.
  • get 속성은 계산될 함수입니다.
  • 전달되는 get 인자를 통해 atoms와 다른 selectors에 접근할 수 있습니다.
  • 다른 atoms나 selectors에 접근하면 참조했던 다른 atoms나 selectors가 업데이트되면서 이 함수도 다시 실행됩니다.
  const selecotrTestReocoilState = useRecoilValue(selecotrTestReocoilState);
  • selector는 useRecoilValue()를 사용해 읽을 수 있습니다.

0개의 댓글