728x90
비동기 작업과 Zustand
내용:
- 비동기 작업을 처리하기 위한 상태 관리: 비동기 작업은 주로 API 호출, 데이터베이스 접근과 같은 외부 데이터를 가져오는 작업을 포함합니다. Zustand는 이러한 비동기 작업을 처리할 수 있도록 간단한 상태 관리 기능을 제공합니다.
- Zustand에서 비동기 작업(fetch API 등) 다루기: 비동기 작업은 async/await 구문을 사용하여 처리됩니다. Zustand의 상태 저장소에 비동기 작업을 추가하면 컴포넌트 간에 데이터를 손쉽게 공유할 수 있습니다. 이를 통해 API 호출 후 상태를 업데이트하고 UI에 반영할 수 있습니다.
실습:
1. API 데이터를 Zustand로 관리하는 예제
// store.js
import create from 'zustand';
const useStore = create((set) => ({
data: [],
loading: false,
error: null,
fetchData: async () => {
set({ loading: true });
try {
const response = await fetch('https://jsonplaceholder.typicode.com/todos');
const data = await response.json();
set({ data, loading: false });
} catch (error) {
set({ error: 'Failed to fetch data', loading: false });
}
},
}));
export default useStore;
2. API 호출 후 상태 업데이트하여 데이터 렌더링
// App.js
import React, { useEffect } from 'react';
import useStore from './store';
function App() {
const { data, loading, error, fetchData } = useStore();
useEffect(() => {
fetchData(); // 컴포넌트가 렌더링될 때 API 호출
}, [fetchData]);
if (loading) return <p>Loading...</p>;
if (error) return <p>{error}</p>;
return (
<div>
<h1>Todo List</h1>
<ul>
{data.map((item) => (
<li key={item.id}>{item.title}</li>
))}
</ul>
</div>
);
}
export default App;
3. 코드 설명:
- useStore 훅에서 fetchData 함수를 통해 비동기 작업을 처리합니다.
- API가 성공적으로 데이터를 가져오면, Zustand의 상태가 set 함수를 통해 업데이트되어 컴포넌트가 다시 렌더링됩니다.
- App 컴포넌트에서는 데이터를 로드 중일 때, 성공적으로 로드했을 때, 오류가 발생했을 때 각각 다른 UI를 표시합니다.
728x90
'React > Zustand' 카테고리의 다른 글
Zustand를 활용(6): Zustand 미들웨어 활용 (0) | 2024.10.15 |
---|---|
Zustand를 활용(5): 상태 리팩토링 및 모듈화 (2) | 2024.10.15 |
Zustand를 활용(3): 여러 컴포넌트 간 상태 공유 (0) | 2024.10.15 |
Zustand를 활용(2): Zustand에서 상태 관리의 기본 원리 (0) | 2024.10.15 |
Zustand를 활용(1): Zustand 개요 및 설치 (0) | 2024.10.15 |