티스토리 뷰
Recoil 설치법
npm install recoil
yarn add recoil
https://recoiljs.org/ko/docs/introduction/getting-started
Recoil이 필요한 이유
App 만든 state를 여러 provider에서 사용하려 할 때 계속해서 아래로 전달 전달하는 식으로 사용해야하기에 매우 불편하다
만약 dark,light 모드나 로그인하였을 때 다르게 변하는 state들을 사용하려고 할 때 작업환경이 매우 복잡해질 것이다.
그래서 Recoil 에서는 Atom 이라는 globlaState를 제공하여 원하는 provider에서 바로 불러와서 사용이 가능한 유용한
React를 위한 상태 관리 라이브러리다
사용법
1. RecoilRoot를 부모트리에 넣어주기.
import React from "react";
import ReactDOM from "react-dom";
import { QueryClient, QueryClientProvider } from "react-query";
import { RecoilRoot } from "recoil";
import App from "./App";
const queryClient = new QueryClient();
ReactDOM.render(
<React.StrictMode>
<RecoilRoot>
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
</RecoilRoot>
</React.StrictMode>,
document.getElementById("root")
);
RecoilRoot로 감싸준다.
2. atoms.ts 파일 만들어 atom 저장하기
import { atom } from "recoil";
export const isDarkAtom = atom({
key: "isDark",
default: true,
});
3.atoms 파일에서 원하는 atom 불러오기
function App() {
const isDark = useRecoilValue(isDarkAtom);
return (
<>
<ThemeProvider theme={isDark ? darkTheme : lightTheme}>
<GlobalStyle />
<Router />
<ReactQueryDevtools initialIsOpen={false} />
</ThemeProvider>
</>
);
}
export default App;
4. atom 안에 있는 value 값을 변경하고 싶을 때, useSetRecoilState()
const isDarkSet = useSetRecoilState(isDarkAtom);
const toggleDark = () => isDarkSet((current) => !current);
return (
<Container>
<Helmet>
<title>코인</title>
</Helmet>
<Header>
<Title>코인</Title>
<button onClick={toggleDark}>Toggle Mode</button>
'react' 카테고리의 다른 글
Recoil 에서 Selector 기능 get, set 사용법 (0) | 2021.12.04 |
---|---|
Simple form validation with React Hook Form 에 관한 글 (0) | 2021.12.03 |
TypeScript + React (0) | 2021.11.25 |
React styled-components (0) | 2021.11.24 |
React useParams (0) | 2021.11.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 노마드코더
- React
- env
- 북클럽
- 아차산
- Storybook
- jest
- 위코드
- 원티드
- nodejs
- error
- import/order
- WSL2
- nextjs
- 스토리 북
- 우아한테크코스
- 프론트앤드
- NextRequest
- 프리온보딩
- TopLayer
- createPortal
- C언어
- NextApiRequest
- 윤성우 열혈C프로그래밍
- electron
- 노개북
- CLASS
- 초보
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함