Почему мой второй вызов personDataSend
set isLoading
значения не работает в запросе мутации RTK Query? Когда вы делаете onClick в первый раз, isLoading
является истиной, но при втором клике это не так, и при втором значении значение остается ложным.
const [
getDriverLicenseByPin,
{ data, isLoading },
] = useLazyGetDriverLicenseByPinQuery();
const personDataSend = (values) => {
getDriverLicenseByPin({
pin: values.Pin,
driverLicenseNumber: values.DriverLicenseNumber,
});
};
🤔 А знаете ли вы, что...
JavaScript может выполняться как на стороне клиента (в браузере), так и на стороне сервера (с использованием Node.js).
RTK кэширует результат. Если вы хотите повторно получить данные, вам придется сначала аннулировать эту часть вашего магазина.
https://redux-toolkit.js.org/rtk-query/usage/automated-refetching
На самом деле запросы загружаются только один раз, например. когда данные еще не кэшированы. Вероятно, вы захотите использовать статус isFetching
, который активен всякий раз, когда запрос активно извлекается.
type UseQueryStateResult<T> = { // Base query state originalArgs?: unknown // Arguments passed to the query data?: T // The latest returned result regardless of trigger arg, if present currentData?: T // The latest returned result for the trigger arg, if present error?: unknown // Error result if present requestId?: string // A string generated by RTK Query endpointName?: string // The name of the given endpoint for the query startedTimeStamp?: number // Timestamp for when the query was initiated fulfilledTimeStamp?: number // Timestamp for when the query was completed isUninitialized: false // Query has not started yet. isLoading: false // Query is currently loading for the first time. No data yet. isFetching: false // Query is currently fetching, but might have data from an earlier request. isSuccess: false // Query has data from a successful load. isError: false // Query is currently in an "error" state. }
Обновите свою логику, чтобы она также ссылалась на статус isFetching
, который должен быть истинным, когда конечная точка запроса повторно запускается/повторно извлекается.
const [
getDriverLicenseByPin,
{ data, isLoading: isLoadingData, isFetching },
] = useLazyGetDriverLicenseByPinQuery();
const isLoading = isLoadingData || isFetching;
const personDataSend = (values) => {
getDriverLicenseByPin({
pin: values.Pin,
driverLicenseNumber: values.DriverLicenseNumber,
});
};