React/Zustand
Zustand를 활용(7): Zustand와 React Suspense 연동
atomicdev
2024. 10. 15. 13:37
728x90
Zustand와 React Suspense 연동
내용:
- React Suspense를 활용한 비동기 데이터 처리: React Suspense는 비동기 로직을 간편하게 처리할 수 있는 방법을 제공합니다. 이 강의에서는 Zustand와 React Suspense를 연동하여, 비동기 데이터가 로딩될 때 적절하게 상태를 관리하고, 렌더링을 제어하는 방법을 다룹니다.
- Zustand와 Suspense를 결합한 상태 관리: Zustand에서 관리되는 상태와 Suspense를 결합하여 비동기 데이터 처리와 상태 관리를 최적화하는 방법을 배웁니다.
실습:
- Suspense를 이용하여 데이터 로딩 상태 처리:
- 비동기 데이터가 로딩되는 동안 Suspense가 로딩 화면을 표시하도록 구현.
- Zustand로 관리되는 상태에 비동기 API 호출을 처리하고 Suspense와 함께 활용.
- Zustand에서 비동기 데이터를 관리:
- Zustand에서 비동기 데이터를 로드하고, Suspense를 통해 로딩 상태를 관리하는 실습을 진행.
샘플 코드:
// Zustand Store with async action
import create from 'zustand';
const useStore = create((set) => ({
data: null,
fetchData: async () => {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const result = await response.json();
set({ data: result });
},
}));
// Suspense component
import React, { Suspense } from 'react';
import { useStore } from './store';
const DataComponent = () => {
const data = useStore((state) => state.data);
return (
<div>
<h3>{data.title}</h3>
<p>{data.body}</p>
</div>
);
};
const FetchComponent = () => {
const fetchData = useStore((state) => state.fetchData);
React.useEffect(() => {
fetchData();
}, [fetchData]);
return <DataComponent />;
};
const App = () => (
<Suspense fallback={<div>Loading...</div>}>
<FetchComponent />
</Suspense>
);
export default App;
강의 흐름:
- Suspense 소개: Suspense가 제공하는 로딩 처리 기능 설명.
- Zustand에서 비동기 데이터를 관리하는 방법 설명.
- 실습: Zustand로 데이터를 관리하고, Suspense로 로딩 상태 처리하기.
728x90