Recoil은 React를 위한 상태 관리 라이브러리다.
(Vue.js를 공부했던 나였기에 😎 Vuex와 같은 거라고 쉽게 생각할 수 있었다!)
npm install recoil
또는 yarn add recoil
RecoilRoot
로 감싸준다.<React.StrictMode>
<RecoilRoot>
<Routes />
</RecoilRoot>
</React.StrictMode>
3.Atom // src/states/movie.tsx
import { atom } from 'recoil'
export const MovieSearch = atom({
key: '#movieSearchValue',
default: ''
})
// routes/Movies/index.tsx
const [searchValue, setSearchValue] = useRecoilState(MovieSearch)
const [test, setTest] = useRecoilState(MovieSearch)
const test = useRecoliValue(MovieSearch)
const setTest = useSetRecoilState(MovieSearch)
const testReset = useResetRecoliState(MovieSearch)
Mount할 때 해당 코드를 실행한다고 치자.
useMount(() => {
Test() // Api 요청을 보내는 메소드
})
이 메소드를 3초마다 업데이트하여 데이터를 변화시켜야 한다고 했을 때 setInterval을 이용하여 구현을 했다고 하자.
useMount(() => {
setInterval(() => {
Test()
},3000)
})
이렇게만 완료를 하게되면 다른 페이지를 넘어갔을 때도 계속 메소드가 실행되고 있는 문제가 발생한다
그렇기에 꼭 해제를 시켜야한다.
let interVal: NodeJS.Timeout
useMount(() => {
interval = setInterval(() => {
Test()
},3000)
})
useUnMount(() => {
clearInterval(interval)
})