리코일 공식 문서 (한글)
특이사항
Recoil 빌드는 ES5로 트랜스파일 되지 않으므로, Recoil을 ES5와 사용하는 것은 지원하지 않는다.
ES6 기능을 natively하게 제공하지 않는 브라우저를 지원해야 하는 경우
Babel로 코드를 컴파일하고 preset @babel/preset-env을 이용하여 이를 수행할 수는 있지만
문제가 발생할 수도 있다.
특히, React와 같이, Recoil은 ES6의 Map과 Set 타입에 의존하는데,
이러한 ES6의 요소들을 polyfills를 통해 에뮬레이션하는 것은 성능상의 문제를 야기할 수 있다.
- eslint에서
eslint-plugin-react-hooks
를 사용할 경우 additionalHooks에 useRecoilCallback
를 추가해주는 것이 좋다. 그 이유는 리액트에서 useState, useEffect와 같은 훅의 디펜던시에 값을 잘못 넣었을 경우 경고를 해 주는데, 리코일에서 사용하는 useRecoilCallback
(추측으로는 리코일에서 사용하는 훅들을 의미하는 것 같다. 아직 사용해보지 않아서 잘 모르겠어요...)의 디펜던시에 대해서도 경고를 표시해준다.
{
"plugins": ["react-hooks"],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": [
"warn",
{
"additionalHooks": "useRecoilCallback"
}
]
}
}