recoil을 사용하면서 atom의 값을 서버의 데이터로 초기화 하고 싶다는 생각을 했다.
검색해보니 atom 대신 selector를 사용하거나, atom이 생성될 때 서버와 먼저 연결될 수 있도록 atom의 effects를 사용하면 된다!
참고로 recoil 공식 사이트의 데이터 동기 예제를 보면 selector를 사용하고 있다.
Asynchronous Data Queries | Recoil (recoiljs.org)
Atom Effects | Recoil (recoiljs.org)
effects를 사용하는 방법은 간단하다. 아래와 같이 서버와 연동시키고 싶은 atom의 effects에 서버와 통신할 함수를 넣어주면 된다.
const receiveMailsEffects =
key =>
({setSelf}) => {
customAxios
.get(`/mailList/receive`)
.then(data => setSelf(data?.data?.data))
.catch(err => console.log(err));
};
export const ReceiveMailsState = atom({
key: 'receiveMails',
default: [],
effects: [receiveMailsEffects('receiveMails')],
effects_UNSTABLE: [ReactNativeRecoilPersist.persistAtom],
});
'react-native' 카테고리의 다른 글
[react-native] 라이브러리 없이 캘린더 직접 구현하기 (0) | 2023.03.31 |
---|---|
[react-native/recoil] recoil selector 사용하기 (0) | 2023.03.12 |
[react-native] 로딩 바 만들기 (0) | 2023.01.02 |
[react-native/react-query] onMutation을 이용한 빠른 동작(optimistic update) (2) | 2022.12.29 |
[react-native] recoil 데이터 유지하기 (async storage) (0) | 2022.12.28 |