Итак, я пытаюсь изучить React-Redux-Saga. Я создаю простое приложение, которое просто берет пользовательские данные из API и отображает их. Вот моя функция генератора в моей саге:
export function* fetchImage() {
try {
const response = yield call(fetch, 'https://randomuser.me/api/');
console.info("Response 111", response);
const responseBody = response.json();
yield put(setImage(response));
} catch (e) {
yield put(fetchFailed(e));
}
return;
}
Он просто выполняет вызов yield для URL-адреса, а затем отправляет действие. Однако объект ответа не возвращается как JSON, вместо этого похоже, что он возвращает какой-то объект ответа:
Я не знаю, что мне делать с этим предметом. Если вы нажмете URL-адрес напрямую через браузер, он вернет объект JSON. Как мне заставить его вернуть JSON?
Итак, мой response.json () возвращает этот объект:
Похоже, мой объект, который я хочу, находится в вещи [[PromiseValue]]. Что это такое и как мне получить свою ценность?





Вы всегда можете получить доступ к телу объекта ответа после его разрешения:
const response = yield call(fetch, 'https://randomuser.me/api/');
const responseBody = yield response.json(); // HERE is what you want
Я сделал это, но он вернул вещь [[PromiseValue]], и мой объект там. Как мне получить оттуда свою ценность? Я отредактировал свой вопрос.
вы звонили response.json с yield?
Как это ?: yield call (fetch, response.json ()); Это дало мне то же самое, что и раньше.
yield response.json();Еще один способ проделать ту же работу, используя метод call.
const response = yield call(fetch, 'https://randomuser.me/api/');
const body = yield call([response, 'json']);
console.info(body)
Другой путь
const body = yield call([response, response.json]);
Используемая вами библиотека с этими
callиputпомещает ваш ответ в объект Response. Вы знаете библиотеку? Если да, то проверьте его документацию, вероятно, это будет так же просто, как получить доступ к этому JSON.