-
Notifications
You must be signed in to change notification settings - Fork 4
π₯ λ±λ‘λ μ λ¬Ό μ€μκ° μ λ°μ΄νΈκ° μ λλ μ΄μ
- μ λ¬Ό λ±λ‘ μλ£ ν μ λ¬Ό λ±λ‘ νμΌλ‘ μ΄λνμ λ μμ΄ν μ΄ μλ μ λ°μ΄νΈκ° λμ§ μλ λ¬Έμ λ°μ(μμ λ μ λ°μλ¨)
- μ λ¬Ό λ±λ‘ νλ©΄μ κ²½μ° μ΄μ μ 쿼리μ μ μ₯λ μ λ¬Ό 리μ€νΈ μ λ³΄κ° λ¨μ μμ΄ μλ‘ μΆκ°λ μ λ¬Ό 리μ€νΈλ₯Ό κ°±μ νμ§ μλ μν©
- μ΄μΈμ λΆνμν 쿼리 ν€κ° μ¬λΏ μ€μ λμ΄ μμμ
λΆνμνκ² μ€μ λμ΄ μλ mutationKey κ° μ κ±° λ° μμ λ λ°μ΄ν° μλμΌλ‘ λ°μλλλ‘ μμ
mutationKeyλ₯Ό μ§μ νμ§ μλλΌλ invalidateQueriesλ₯Ό νμ©νλ©΄ νΉμ 쿼리λ₯Ό 무ν¨νν΄μ ν΄λΉ 쿼리λ₯Ό λ€μ λΆλ₯Ό λ refetchκ° μ΄λ£¨μ΄μ§λλ‘ μμ ν μ μμ΄, useMutate ν¨μμ μ€μ λ λΆνμν mutationKeyλ€μ λͺ¨λ μ κ±°νμ΅λλ€.
invalidateQueriesμ refetchQueries λͺ¨λ μ€μκ° μ λ°μ΄νΈλ₯Ό μν΄ μ¬μ©ν μ μμΌλ, λΆνμν λ€νΈμν¬ νΈμΆμ μ€μ΄κΈ° μν΄ invalidateQueriesλ‘ κ²°μ νμμ΅λλ€. refetchQueriesλ νΈμΆλλ μ¦μ refetchκ° μλλλ λ°λ©΄, invalidateQueriesλ 쿼리 ν€ λ¬΄ν¨νλ§ μ°μ μ§ννκΈ° λλ¬Έμ λλ€. λ€λ§ invalidateQueries μ¬μ© μ 무ν¨νν 쿼리μ λν 쿼리ν€λ₯Ό μ§μ ν λ, μμκ° λ€λ₯΄λ©΄ μ λλ‘ λ°μμ΄ μ λλ―λ‘ κΌΌκΌΌν 체ν¬ν΄μΌ ν©λλ€!
μ λ¬Όν, μ λ¬Όλ°© νΈμ§μ μ°μ΄λ delete κ΄λ ¨ μλ² ν΅μ μ½λλ₯Ό λͺ¨λ κ°μ λ°©μμΌλ‘ μμ νμ΅λλ€.
// useDeleteMyGift.tsx μΌλΆ
export function useDeleteMyGift(roomId: number) {
const queryClient = useQueryClient();
const mutation = useMutation({
mutationFn: deleteMyGift,
onSuccess() {
console.log('μ λ¬Ό μμ μ±κ³΅');
// μ΄ λ μ°μ΄λ 쿼리 ν€λ 'λ΄κ° λ±λ‘ν μ λ¬Ό 리μ€νΈ'λ₯Ό GET ν΄μ€λ ν¨μμμ μ§μ ν΄μ€ 쿼리 ν€μ λμΌνκ² μ§μ ν΄μ£Όμ΄μ
// ν΄λΉ 쿼리μ λν 무ν¨νκ° μ§νλλλ‘ ν©λλ€.
queryClient.invalidateQueries({ queryKey: [MY_GIFT_QUERY_KEY[0], roomId] });
},
onError: (error) => {
console.log('μ λ¬Ό μμ μ€ μλ¬κ° λ°μνμ΅λλ€.', error.message);
},
});
// useDeleteRoomMember.tsx
export const deleteRoomMember = async ({ roomId, memberId }: DeleteRoomMember) => {
await del(`/room/${roomId}/members/${memberId}`);
};
const useDeleteRoomMember = ({ roomId }: DeleteRoomMember) => {
const queryClient = useQueryClient();
const mutation = useMutation({
mutationFn: deleteRoomMember,
onSuccess() {
console.log('μμ μ±κ³΅');
// μ¬κΈ°μμλ μ λ¬Όλ°© μ°Έμ¬ λ©€λ² λ¦¬μ€νΈλ₯Ό GET ν΄μ€λ 쿼리λ₯Ό 무ν¨ννκΈ° μν΄ μΏΌλ¦¬ν€λ₯Ό μλμ κ°μ΄ μ€μ ν©λλ€.
queryClient.invalidateQueries({ queryKey: [...ROOM_MEMBER_QUERY_KEY, roomId] });
},
onError: (error) => {
console.log('μ λ¬Ό μμ μ€ μλ¬κ° λ°μνμ΅λλ€.', error.message);
},
});
return { mutation };
};
β¬οΈ λ΄κ° λ±λ‘ν μ λ¬Ό μμ λ νλ©΄