RTK Query не может получить новые данные после мутации

Я пытаюсь использовать запрос RTK для извлечения данных из Firestore с помощью функции queryFn. Проблема, с которой я столкнулся, заключается в том, что я разрабатываю мультимастер, в котором поля в форме инициализируются данными прямо из RTK Query.

Обновите поле ввода с помощью мутации на шаге 1. Перейти к шагу 2 Вернитесь к шагу 1 (выборка отклонена с ошибкой ConditionError, см. прикрепленный журнал)

export const userApi = createApi({
    reducerPath: 'userApi',
    baseQuery: fakeBaseQuery(),
    tagTypes: ['User'],
    endpoints: builder => ({
        getUser: builder.query<Customer, string>({
            async queryFn(userId) {
                try {
                    const docSnapshot = await getDoc(doc(db, 'users', userId));
                    const customer = docSnapshot.data() as Customer;
                    return { data: customer };
                } catch (err) {
                    return { error: err };
                }
            },
            providesTags: (result, error, arg) => [{type: 'User', id: result.id }]
            
        }),
        updateUser: builder.mutation<{ success: boolean }, { userId: string; user: Partial<UserInfo> }>({
            async queryFn(payload) {
                const { userId, user } = payload;
                try {
                    // Note: Id is same for both. Have also tried replacing with 'LIST'
                    const res = await updateDoc(doc(db, 'users', userId), { ...user });
                    return { data: { success: true } };
                } catch (err) {
                    return { error: err ? err : null };
                }
            },
            invalidatesTags:  (result, error, { userId }) => [{ type: 'User', id: userId}],
        })
    })
});

export const { useGetUserQuery, useUpdateUserMutation } = userApi;

Я также пробовал использовать User для тегов ProvideTag/invalidatesTags.

Я пытаюсь понять, почему второй запрос после возврата к шагу 1 формы не может получить данные, которые я только что обновил.

[LXI-SpartaCodingClub Full-Stack Bootcamp in Indonesia] 2023/1/21 TIL/Week 15]
[LXI-SpartaCodingClub Full-Stack Bootcamp in Indonesia] 2023/1/21 TIL/Week 15]
Я научился создавать карусель в ReactJS с помощью библиотеки Splide.
Краткое введение в Styled-компоненты
Краткое введение в Styled-компоненты
В настоящее время популярность Styled-компонентов становится все больше и больше. Большинство проектов, построенных на React.js, используют эту...
ДЕНЬ 8 | Страница обзора в React
ДЕНЬ 8 | Страница обзора в React
Сегодня я сделал страницу обзора с помощью react. Я использовал некоторые иконки из reacting icons и использовал генератор случайных чисел для...
Как настроить среду разработки React.
Как настроить среду разработки React.
весь процесс настройки среды разработки react.
Что вы должны знать о JSX - объяснение менее чем за 2 минуты
Что вы должны знать о JSX - объяснение менее чем за 2 минуты
React - это библиотека JavaScript для создания пользовательских интерфейсов.
Как использовать get bounds с react-leaflet и данными JSON
Как использовать get bounds с react-leaflet и данными JSON
Я считаю, что получить границы из библиотеки leaflet Js очень просто, но использование этой функции может быть немного сложным. Поэтому позвольте мне...
0
0
200
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я исправил эту проблему, обновив rtk с 1.8.5 до 1.9.0.

Кажется, был баг

invalidateTags работает правильно при работе с постоянным запросом государство.

https://github.com/reduxjs/redux-toolkit/releases/tag/v1.9.0

Другие вопросы по теме