Я пытаюсь получить доступ к запросу со своей страницы реакции внешнего интерфейса. Когда я вызываю запрос, это
import React from "react";
import { useQuery } from "@apollo/react-hooks";
import { getBookQuery } from "../queries/queries";
export const BookDetails = (props) => {
const { loading, error, data } = useQuery(getBookQuery, {
skip: !props.bookId,
variables: { id: props.bookId },
});
let content;
if (loading) content = <p>Loading Detail...</p>;
if (error) {
content = <p>Error...</p>;
}
if (!props.bookId) {
content = <p>No book selected yet</p>;
} else {
console.log(data.book);
const book = data;
}
return (
<div id="hook-details">
</div>
);
Когда я запускаю этот код, я вижу ошибку TypeError: Невозможно прочитать свойство 'book' из неопределенного
Чтобы исправить эту ошибку Я изменил приведенный выше код, чтобы использовать другие операторы if вместо просто if, но я не понимаю, почему это исправляет ошибку. Даже когда я добавляю лог-операторы в каждый блок if, один и тот же код, кажется, вызывается одновременно
Рабочий код:
import React from "react";
import { useQuery } from "@apollo/react-hooks";
import { getBookQuery } from "../queries/queries";
export const BookDetails = (props) => {
const { loading, error, data } = useQuery(getBookQuery, {
skip: !props.bookId,
variables: { id: props.bookId },
});
let content;
if (loading) content = <p>Loading Detail...</p>;
else if (error) {
content = <p>Error...</p>;
}
else if (!props.bookId) {
content = <p>No book selected yet</p>;
} else {
console.log(data.book);
const book = data;
}
return (
<div id="hook-details">
</div>
);
};
Спасибо.