Я немного заблудился с react-query
. По сути, у меня есть useQuery
для извлечения пользователя из моей базы данных. Их данные добавляются в форму, и они могут обновляться и отправлять.
У меня проблема в том, что обновление выполняется в другой базе данных. Основная база данных будет обновлена партиями позже. Таким образом, вместо повторной выборки исходных данных мне нужно использовать setQueryData
для обновления версии кеша.
queryClient = useQueryClient()
const { mutate } = useMutation(postUser, {
onSuccess: async (response) => {
console.log(response)
queryClient.cancelQueries('user');
const previousUser = queryClient.getQueryData('user');
console.log(previousUser)
queryClient.setQueryData('user', {
...previousUser,
data: [
previousUser.data,
{ '@status': 'true' },
],
})
return () => queryClient.setQueryData('user', previousUser)
}
})
На данный момент у меня есть что-то подобное вышеупомянутому. Поэтому он вызывает postUser и получает ответ. Ответ выглядит примерно так
data:
data:
user_uid: "12345"
status: "true"
message: "User added."
status: 1
Затем я getQueryData
, чтобы получить кеш-версию данных, которая в настоящее время выглядит так
data:
@userUuid: "12345"
@status: ""
message: "User found."
status: 1
Поэтому мне нужно обновить кешированную версию @status, чтобы она стала правдой. С тем, что у меня есть выше, кажется, что в кеш добавляется новая строка
data: Array(2)
0: {@userUuid: "12345", @status: ""}
1: {@status: "true"}
message: "User found."
status: 1
Итак, как мне перезаписать существующую, не добавляя новую строку?
Спасибо