4. 비동기 데이터 쿼리
// atom.js
export const todoIdState = atom({
key: "todoIdState",
default: 1
});
export const todoItemQuery = selector({
key: "todoItemQuery",
get: async ({ get }) => {
const id = get(todoIdState);
const response = await axios.get(
`https://jsonplaceholder.typicode.com/todos/${id}`
);
return response.data;
}
});
// App.js
import { RecoilRoot } from "recoil";
import { Suspense } from "react";
import Container from "./container";
export default function App() {
return (
<RecoilRoot>
<Suspense fallback={() => <p>Loading...</p>}>
<Container />
</Suspense>
</RecoilRoot>
);
}
// container/index.js
import { todoItemQuery } from "../atom";
import { useRecoilValue } from "recoil";
const Container = () => {
const data = useRecoilValue(todoItemQuery);
return <div>{data.title}</div>;
};
export default Container;파라미터에 따라 비동기 데이터 요청
Last updated