export const Schedule = (props: ScheduleProps) => {
const selectedDay = useAppSelector(selectScheduleDay);
const lessons = useAppSelector(selectLessons);
const { isLoading, isError } = useGetScheduleByDayNumberQuery(selectedDay);
const weekNumbers = FormatHelper.getCurrentWeekNumbers();
return (
<ContentBlock title="Schedule">
<ScheduleNavigation daysOfWeek={daysOfWeek} weekNumbers={weekNumbers} />
<div className={styles.list}>
<ScheduleCardList isError={isError} isLoading={isLoading} lessons={lessons} />
</div>
</ContentBlock>
);
};
export const scheduleAPI = api.injectEndpoints({
endpoints: (build) => ({
getScheduleByDayNumber: build.query<ISchedule[], string | undefined>({
query: (dayNumber) => ({
url: `/schedule`,
params: {
dayNumber,
},
}),
async onQueryStarted(_, { dispatch, queryFulfilled }) {
try {
const result = await queryFulfilled;
dispatch(setLessons(result.data[0].lessons || []));
} catch (error) {
console.error(error);
}
},
}),
}),
});
export const { useGetScheduleByDayNumberQuery } = scheduleAPI;
export const {
endpoints: { getScheduleByDayNumber },
} = scheduleAPI;
Есть компонент ScheduleNavigation по сути это табы с номерами недели, при клике на таб я должен получать новые данные
1) Первая проблема: почему при клике с таба одного таба на другой не показывается скелетон, данные просто появляются если они есть
2) Вторая проблема: почему при клике с таба одного таба на другой если данных не приходит (404 status code) у меня остаются данные предидущего таба, не выводит ошибки.
3) Третья проблема кэширование: при клике с одного таба на другой и обратно выполняется повтороный запрос, кэширования нет
БУДУ ОЧЕНЬ БЛАГОДАРЕН ЕСЛИ ПОМОЖЕТЕ. Не могу найти инфы в инете вообще