У меня возникают проблемы при попытке прочитать из кэша apollo из компонента react
, мутация работает и записывает на мой сервер и возвращает данные, но при передаче в функцию обновления, кажется, теряет контекст этого, когда в inMemoryCache.js
- "apollo-cache-inmemory": "^ 1.2.5"
- «реакция-аполлон»: «^ 2.1.4»
- "apollo-boost": "^ 0.1.7"
TypeError: Невозможно прочитать свойство 'read' из неопределенного
на ./node_modules/apollo-cache-inmemory/lib/inMemoryCache.js.InMemoryCache.readQuery
import React, { Component } from "react";
import { graphql } from "react-apollo";
import trim from "lodash/trim";
import AuthorForm from '../components/author-form';
import ALL_AUTHORS from "../graphql/getPosts.query";
import CREATE_AUTHOR from "../graphql/createAuthor.mutation";
class CreateAuthor extends Component {
state = {
errors: false
};
onSubmit(event) {
event.preventDefault();
const form = new FormData(event.target);
const data = {
firstName: form.get("firstName"),
lastName: form.get("lastName")
};
if (!data.firstName || !data.lastName) {
return this.setState({ errors: true });
}
this.create({
firstName: trim(data.firstName),
lastName: trim(data.lastName)
});
}
async create(variables) {
const { createAuthor } = this.props;
this.setState({ errors: false });
try {
await createAuthor({
variables,
update: (cache, data) => this.updateCache(cache, data)
})
} catch (e) {
this.setState({ errors: true })
}
}
updateCache({ readQuery, writeQuery }, { data: { createAuthor }, errors }) {
if (errors) {
return;
}
const { allAuthors } = readQuery({
query: ALL_AUTHORS,
defaults: {
allAuthors: []
}
});
/*eslint-disable*/ console.log(allAuthors);
}
render() {
return (
<div>
<AuthorForm onSubmit={this.onSubmit.bind(this)}/>
<OnError/>
</div>
);
}
}
export default graphql(CREATE_AUTHOR, { name: "createAuthor" })(CreateAuthor);
это связано со мной, привязав это к кнопке onSubmit? Если да, то как правильно прикрепить функцию к элементу, не теряя при этом контекста внутри компонента, и все же позволить кешу apollo функционировать должным образом.