Подписка React Apollo обходит оболочку graphql

У меня есть пример приложения под названием GraphQL Bookstore, которое создает книги, издателей и авторов и показывает отношения между ними. Я использую подписки, чтобы показывать обновления в режиме реального времени.

Почему-то мой BOOK_ADDED подписка в обход graphql обертка полностью. Он вызывает обернутый класс с books опора установлена 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 будет вызвана обертка, правильно установив реквизит перед вызовом render() метод. Что мне не хватает?

Заранее спасибо!

0 ответов

Другие вопросы по тегам