[리액트] React에서 사용한 Recoil을 Jotai로 대체하기
2025. 4. 27. 21:36ㆍ리액트
React 공부 중 Recoil을 사용한 부분에서 계속
Uncaught TypeError: Cannot destructure property 'ReactCurrentDispatcher' of 'import_react.default.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED' as it is undefined.
^ 해당 에러 발생.
원인을 찾아보니 React 19버전부터 Recoil을 지원하지 않는다고 함.
==> Recoil을 포기하고 Recoil과 비슷한 Jotai로 코드를 전부 대체하기로 함.
기존 Recoil 사용 코드
//Recoil 설치
npm install recoil
//Recoil Atom 생성
import { atom } from 'recoil'
export const searchState = atom<string>({
key: 'searchState',
default: 'Korea',
})
//Recoil Atom 불러오는 부분
import { selector } from 'recoil'
import { searchState } from '../atoms/searchState'
import axios from 'axios'
export const imageData = selector({
key: 'imageData',
get: async ({ get }) => {
const searchValue = get(searchState)
return searchValue;
},
})
//Recoil Selector 불러오는 방법
const imgSelector = useRecoilValueLoadable(imageData)
Jotai가 더 코드가 간단한 것같다.
변경 Jotai 부분
//Jotai 설치
npm install jotai
//Jotai Atom 생성
import { atom } from "jotai";
export const searchState = atom("Korea");
//Jotai Atom 불러오는 부분
import { atom } from "jotai";
import axios from "axios"; //api
import { searchState } from "@/recoil/atoms/searchState";
export const imageData = atom(async (get) => {
const searchValue = get(searchState);
return searchValue;
});
//Jotai atom 불러오는 방법
const [imgSelector] = useAtom(imageData);
'리액트' 카테고리의 다른 글
[리액트] import에서 {}를 쓰는 것과 안 쓰는것의 차이 (0) | 2025.04.28 |
---|---|
[리액트] c#의 using과 리액트의 import 비교 (0) | 2025.04.28 |
[리액트]비동기 vs 동기 (0) | 2025.04.27 |
[React] @import를 @use로 바꾸면서 생기는 문제들 (0) | 2025.04.20 |