frontend icon indicating copy to clipboard operation
frontend copied to clipboard

Nextjs Hot Module Reload시 recoil duplicate key오류

Open manudeli opened this issue 3 years ago • 3 comments

manudeli avatar Nov 13 '22 06:11 manudeli

이 문제 때문에 많이 찾아봤었는데 https://github.com/facebookexperimental/Recoil/issues/733 여기서는 env file에 RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false

이라는 statement를 추가해주는 방법을 추천하더라고요, 사실 저 방법은 문제 해결이 아닌 문제 회피라고 생각해서 찝찝했었는데 종현님께서 구현하신 방법이 더 우아한 해결법인것 같네요.

감사합니다!

okinawaa avatar Nov 17 '22 08:11 okinawaa

아톰의 키가 중복될 수 없게 맵 형식으로 객체에 atom들을 한 파일에서 주입했다가 이 함수의 리턴을 리덕스의 useTypedSelector처럼 타입추론해서 사용하면 어떨까했는데 아이디어만 생각해보고 구현은 못했네요

export const atoms = createAtoms({
  key1: initialValue1,
  key2: initialValue2,
})

const { useAtomValue, useAtom... } = atoms.key1

이렇게 하면 번들사이즈가 커질 거 같긴 한데 리덕스시절 서버상태를 모두 사용했던거 보다는 훨씬 작을 거 같아서 중복키를 없앨 수 있는 점에서 트레이드오프로 가져 갈 만 하지않을까? 라고 생각해요

에러를 꺼놔서 찬혁님 덕분에 구조를 다시 생각해봐야 겠네요~

이 방법의 문제는 개발모드에서 키가 계속 변경되는 문제가 있어요 결국 프로덕션이랑 동작이 다른 거죠 우아하다고 말하긴 어려운 거 같고 문제가 생기길 기다리고 있다고 볼 수 있습니다 ㅎㅎ

manudeli avatar Nov 17 '22 09:11 manudeli

아.. 키가 계속 바뀌게 되는군요 맞네요 ㅠ.. 저도 한번 고민해봐야겠네요..

okinawaa avatar Nov 17 '22 09:11 okinawaa