【发布时间】:2020-09-04 18:47:58
【问题描述】:
目前我有一个 BooksList 组件,当单击标题时,我正在将道具传递给我的 BooksDetails 组件。如何使用 Apollo 挂钩仅查询道具更改?
我不确定如何使用钩子来做到这一点。我浏览了 Apollo 的 UseQuery 文档。我找不到有关 UseLazyQuery 的文档。
我尝试了以下方法,但它总是返回未定义:
const { loading, error, data } = useQuery(getBookQuery, {
options: (props) => {
return {
variables: {
id: props.bookId
}
}
}
})
书单:
const BookList = () => {
const {loading, error, data} = useQuery(getBooksQuery)
const [selectedId, setId] = useState('');
return (
<div id='main'>
<ul id='book-list'>
{data && data.books.map(book => (
<li onClick={() => setId(book.id)} key={book.id}>{book.name}</li>
)) }
</ul>
<BookDetails bookId={selectedId} />
</div>
);
};
export default BookList;
书籍详情:
const BookDetails = (props) => {
const { loading, error, data } = useQuery(getBookQuery, {
options: (props) => {
return {
variables: {
id: props.bookId
}
}
}
})
console.log(data)
return (
<div id='book-details'>
<p>Output Book Details here</p>
</div>
);
};
export default BookDetails;
编辑 - 我忘了补充说我的 GetBookQuery 有一个 ID 参数,所以一个例子是getBookQuery(123)。
【问题讨论】:
-
只是
useQuery(getBookQuery, { variables: { id: props.bookId } } )?
标签: javascript reactjs graphql apollo