@JeanPaulBelmondo

Можно ли в RTK Query из одного api обновить другое?

у меня есть две апишки, первая получает выбранную запись для редактирования

spoiler
export const currentTestApi = createApi({
    reducerPath: 'currentTest',
    baseQuery,
    tagTypes: ['currentTest'],
    endpoints: (builder) => ({
        getCurrentTest: builder.query<Test, number | string | undefined>({
            query: (id) => `test/${id}/edit`,
            providesTags: ['currentTest'],
        }),
    }),
});


вторая получает список всех записей с возможность переключить статус
spoiler
export const testsApi = createApi({
    reducerPath: 'tests',
    baseQuery,
    tagTypes: ['tests'],
    endpoints: (builder) => ({
        toggleTestStatus: builder.mutation<void, {
            id: number
            test: Test,
        }>({
            query: ({ id, test }) => ({
                url: `tests/${id}`,
                method: 'PATCH',
                body: { ...test },
            }),
            invalidatesTags: (_, error) => (error ? [] : ['tests']),
            async onQueryStarted({ ...patch }, { dispatch, queryFulfilled }) {
                const patchResult = dispatch(
                    currentTestApi.util.updateQueryData('getCurrentTest', patch.id, (draft) => {
                        Object.assign(draft, {
                            ...draft,
                            title: 'lorem ipsum',
                        });
                    }),
                );


                try {
                    await queryFulfilled;
                } catch {
                    patchResult.undo();
                }
            },
        }),
    }),
});


проблема в том, что "patchResult" в onQueryStarted во 2й апишке всегда пустой.

что я делаю не так и куда копать?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы