Ce problème n'a aucun sens pour moi du tout... J'ajoute un auteur à une base de données en utilisant une mutation comme ceci :
this.props
.addAuthorMutation({
variables: {
name: this.state.name,
age: this.state.age
},
refetchQueries: [
{
query: getAuthorsQuery,
variables: {
awaitRefetchQueries: true
}
}
]
})
.then(() => this.submitBookAlso());
Ensuite simplement...
submitBookAlso() {
console.log(this);
console.log(this.props);
}
Pour une raison mystérieuse, lorsque j'inspecte (this) dans la console, this.props.getAuthorsQuery.authors contient mon auteur ajouté, cependant, (this.props) dans la console ne le contient pas. Le nouvel auteur est ajouté à un menu déroulant dans un autre composant avec succès, et est présent dans la base de données, mais je ne parviens pas à obtenir l'auteur après la mutation. Je voudrais le filtrer...
let author = this.props.getAuthorsQuery.authors.filter(
author => this.state.name === author.name
);
console.log(author);
...mais cela me donne simplement un tableau vide. Ce que je veux faire est déclencher une autre mutation lorsque celle-ci est terminée (ajout d'un livre à une collection de bases de données séparée avec le nouvel auteur ajouté en tant qu'auteur).
J'obtiens le même résultat sans utiliser awaitRefetchQueries, et également en utilisant onCompleted au lieu de .then(). Voici mes dépendances actuelles :
"dependencies": {
"apollo-boost": "^0.1.16",
"graphql": "^14.0.2",
"react": "^16.5.2",
"react-apollo": "^2.2.4",
"react-dom": "^16.5.2",
"react-scripts": "2.0.3"
},
Merci !