728x90
반응형
데이터 저장 기능은 useMutation 훅을 사용하여 구현할 수 있습니다. 아래는 예시 코드입니다:
import React, { useState } from 'react';
import { useMutation, useQueryClient } from 'react-query';
// 데이터 저장 함수
const saveData = async (data) => {
const response = await fetch('https://api.example.com/save', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
if (!response.ok) {
throw new Error('데이터 저장에 문제가 있습니다');
}
return response.json();
};
const DataSave = () => {
const queryClient = useQueryClient();
const [formData, setFormData] = useState({ key1: '', key2: '' });
// useMutation 훅을 사용하여 데이터를 저장합니다
const mutation = useMutation(saveData, {
onSuccess: () => {
// 저장이 성공하면 데이터를 다시 조회합니다
queryClient.invalidateQueries('fetchData');
},
});
// 폼 제출 시 호출되는 함수
const handleSubmit = (event) => {
event.preventDefault();
mutation.mutate(formData);
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={formData.key1}
onChange={(e) => setFormData({ ...formData, key1: e.target.value })}
placeholder="Key1"
/>
<input
type="text"
value={formData.key2}
onChange={(e) => setFormData({ ...formData, key2: e.target.value })}
placeholder="Key2"
/>
<button type="submit">저장</button>
{mutation.isLoading ? (
<p>저장 중...</p>
) : mutation.isError ? (
<p>저장에 실패했습니다: {mutation.error.message}</p>
) : (
mutation.isSuccess && <p>저장이 완료되었습니다!</p>
)}
</form>
);
};
export default DataSave;
- saveData 함수: 서버에 데이터를 저장하는 함수입니다.
- useMutation 훅: React Query를 사용하여 데이터를 저장합니다.
- handleSubmit 함수: 폼 제출 시 호출되어 데이터를 저장합니다.
- queryClient.invalidateQueries: 데이터 저장이 성공하면 해당 쿼리를 무효화하여 데이터를 다시 조회합니다.
728x90
'React.js' 카테고리의 다른 글
[React.js]리액트에서 자주 쓰는 훅 (1) | 2024.11.09 |
---|---|
[React.js]npm과 yarn 의 차이점 yarn을 쓰는 이유 (0) | 2024.09.09 |
[ React.js]useform 사용 방법 (0) | 2024.08.10 |
[실무 React.Js] Tabulater로 Grid 활용하기 (0) | 2024.07.23 |
[실무 React.Js] React-query 데이터 검색/조회하기 (2) | 2024.07.20 |