У меня есть серверная часть C# .net 8 (позже известная как BE), которая обеспечивает мой интерфейс реагирования на машинописный текст (FE) данными.
Я использую RTK-запрос для получения данных, но у меня возникли проблемы, когда я предположил, что объект Date, который я получил от BE, на самом деле является объектом Date.
Класс в BE:
public class Action
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime? StartDate { get; set; }
}
Введите FE:
export interface Action {
id: number;
name: string;
startDate: Date;
}
Конечная точка запроса RTK:
actionById: builder.query<Action, number>({
query: (id: number) => ({
url: `${BASE_URL}/v1/Action/${id}`
method: 'GET',
}),
}),
Ответ от BE, очевидно, представляет собой строку JSON, но я думал, что преобразование в объект Date было выполнено автоматически. Не было. Все работало нормально, пока я не попытался сравнить ее с другой датой, но это не удалось.
Итак, вопрос в том, как мне решить эту проблему наилучшим образом?
Я мог бы изменить тип в FE на startDate: string;
, чтобы избежать путаницы, но есть ли лучший способ?
Я бы предложил использовать TransformResponse, чтобы при необходимости преобразовать данные ответа. Может быть, что-то вроде этого:
actionById: builder.query<Action, number>({
query: (id: number) => `${BASE_URL}/v1/Action/${id}`,
transformResponse: (response) => ({ ...response, startDate: new Date(response.startDate) }),
}),
Вы можете написать какой-нибудь http-перехватчик или дескриптор в ответе obj,startDate = new Date(response.startDate)