React Native - заставьте dummy db получить реальные данные из API - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в React Native и JS, и недавно приобрел шаблон React Native с фиктивной БД.

В идеале мне бы хотелось получить данные из внешнего JSON (API) который генерируется на PHP веб-сайте, который у нас уже работает.

Вот файл фиктивных данных:

import {
  DoctorModel,
  TreatmentModel,
  CampaignModel,
  EventModel
} from "../models";

export const doctorsList: DoctorModel[] = [ { ##JSON HERE## } ];

export const treatmentsList: TreatmentModel[] = [ { ##JSON HERE## } ];

export const campaignList: CampaignModel[] = [ { ##JSON HERE## } ];

export const eventList: EventModel[] = [ { ##JSON HERE## } ];

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

Я пробовал следующее ...

export const doctorsList: DoctorModel[] = () =>
  fetch(' ##LINK TO API## ')
    .then((response) => response.json());

Но получил эту ошибку:

Type '() => Promise<any>' is missing the following properties from type 'DoctorModel[]': pop, push, concat, join, and 27 more.

Я посмотрел все здесь и на других платформах для решения, но ничего не могу найти.

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

Любая помощь очень ценится, все еще пытаясь обернуть мою голову React! :)

1 Ответ

0 голосов
/ 29 апреля 2020

Это не похоже на проблему с реакцией, а на машинописную. Typescript делает вывод типа из вашего возвращаемого значения, чтобы проверить, соответствует ли оно тому, что вы указали.

Вкратце: вы только что объявили неверные типы.

Функция не ' t возвращает DoctorModel[] он возвращает Promise<DoctorModel[]>

export const doctorsList: Promise<DoctorModel[]> = () =>
  fetch(' ##LINK TO API## ')
    .then((response) => response.json() as DoctorsModel[]);

Таким образом, изменение этой строки должно привести к тому, что ваш компилятор машинописного текста снова будет зависать!

...