Recoil, 왜 사용할까?
- Context API는 Provider 하위의 모든 컴포넌트가 상태 변화 시 리렌더링
- 전역 상태 관리 코드가 굉장히 간결하며, 사용이 간편함.
- 페이스북에서 공식적으로 만들었으며, 권장하는 전역 상태 관리 툴
- 서버 상태/클라이언트 상태를 분리할 때, 코드 복잡도가 매우 낮아짐.
Redux의 동작 원리
MVC패턴의 문제점
Flux패턴
Redux는 Flux패턴과 유사하지만 다르다.
Recoil의 동작 원리
Atoms
Selector
Atom
선언
export const smallState = atom({
key: 'smallState', // 고유한 키 값
default: "작은 상태",
});
참조 & 상태 변화
function SmallStateComponent() {
const [smallState, setSamllState] = useRecoilState(smallState);
return (
<div>{smallState}</div>
<button onClick={() => setSmallState("다른 작은 상태")}>
상태를 바꿔보자
</button>
);
}
상당히 useState와 유사하다. Redux와 다르게 React스러운 상태관리임을 알 수 있다.
Selector
import { dataList } from "./atom";
export const userSelector = selector({
key: "mySelector",
get: (params) =>
({ get }) => get(dataList).filter((myData)
}
);
import { dataList } from "./atom";
export const userSelector = selectorFamily({
key: "mySelector",
get: (params) =>
({ get }) => get(dataList).filter((myData) => myData.id.includes(`${params}`))
}
);