Поскольку файл JSON за этой гиперссылкой действителен, я подозреваю, что у вас есть сетевая ошибка, и вместо этого вы получаете стандартную страницу ошибки HTML, которая начинается с <html>
. Это стало причиной получения ошибки SyntaxError: Unexpected token < in JSON at position 0
в 99% отлаженных мной случаев.
Так что дважды проверьте в консоли, действительно ли вы получаете этот файл с правильным типом в качестве ответа.
РЕДАКТИРОВАТЬ:
У вас есть две проблемы:
1) API ожидает, что вы получите файл JSON с использованием HTTPS. Поэтому просто добавьте, что перед вашим URL в действиях:
import { days } from "../components/app";
export function fetchData(day) {
return async dispatch => {
dispatch({ type: "LOAD_DATA_START", day });
const response = await fetch(`https://api.iev.aero/api/flights/${day}`);
const data = (await response.json()).body;
dispatch({ type: "LOAD_DATA_END", data });
dispatch({ type: "SET_SHIFT", data });
};
}
2) Ваш параметр {day}
, необходимый вам для URL, не передается правильно. Так что есть проблема с тем, как вы передаете реквизит или состояние или что-то между реакцией и редукцией. К сожалению, я не могу сказать, каково точное решение для этого, так как я не использую response + redux вместе. Но когда я заменяю {day}
одной из предоставленных вами строк дня export const days = ["23-08-2019", "24-08-2019", "25-08-2019"];
, API возвращает правильный файл JSON.
Так что исправьте проблему HTTPS
, а затем попробуйте исправить проблему {day}
,Тогда JSON должен вернуться правильно. У вас все еще будут ошибки, связанные с фильтрацией, но это не имеет ничего общего с проблемой файла json и может быть решено отдельно.