React Apollo订阅绕过graphql包装器

时间:2017-10-01 16:18:02

标签: graphql react-apollo apollo-client apollo-server graphql-subscriptions

我有一个名为GraphQL Bookstore的示例应用,可以创建图书,出版商和作者,并展示他们之间的关系。我正在使用订阅来实时显示更新。

由于某种原因,我的# sudo grep -R bind-address /etc 订阅完全绕过了BOOK_ADDED包装器。它调用包装类,graphql道具设置为books。代码的相关部分如下所示(您可以看到完整代码here)。

undefined

基本上,当客户端收到订阅通知时,会调用class BooksContainerBase extends React.Component { componentWillMount() { const { subscribeToMore } = this.props; subscribeToMore({ document: BOOK_ADDED, updateQuery: (prev, { subscriptionData }) => { if (!subscriptionData.data) { return prev; } const newBook = subscriptionData.data.bookAdded; // Don't double add the book if (!prev.books.find(book => book.id === newBook.id)) { return Object.assign({}, prev, { books: [...prev.books, newBook] }); } else { return prev; } } }); } render() { const { books } = this.props; return <BooksView books={books} />; } } ... export const BooksContainer = graphql(BOOKS_QUERY, { props: ({ data: { loading, error, subscribeToMore, books } }) => ({ loading, error, subscribeToMore, books }) })(LoadingStateViewer(BooksContainerBase)); 函数 - 正如预期的那样。但是,只要该函数退出,就会直接调用包装类的updateQuery()方法,并将render()设置为books。我希望调用undefined包装器,在调用graphql方法之前正确设置道具。我错过了什么?

提前致谢!

0 个答案:

没有答案