这个问题对我完全没有意义...我正在使用这样的突变将作者添加到数据库中:
this.props
.addAuthorMutation({
variables: {
name: this.state.name,
age: this.state.age
},
refetchQueries: [
{
query: getAuthorsQuery,
variables: {
awaitRefetchQueries: true
}
}
]
})
.then(() => this.submitBookAlso());
然后简单地...
submitBookAlso() {
console.log(this);
console.log(this.props);
}
出于某种神秘的原因,当我在控制台中检查(this)时,this.props.getAuthorsQuery.authors包含我添加的作者,但是,控制台中的(this.props)却没有。新作者已成功添加到另一个组件的下拉列表中,并且在数据库中,但是在突变之后我似乎无法找到该作者。我想过滤它...
let author = this.props.getAuthorsQuery.authors.filter(
author => this.state.name === author.name
);
console.log(author);
...但这只是给我一个空数组。我想做的是在完成一个操作后触发另一种变异(将一本书添加到一个由新添加的作者作为作者的单独的数据库集中)。
我得到相同的结果,而不使用awaitRefetchQueries,也使用onCompleted而不是.then()。这些是我当前的依赖项:
"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"
},
谢谢!
答案 0 :(得分:0)
尝试将awaitRefetchQueries
直接传递给突变,而不是像这样嵌套在refetchQueries
内:
this.props
.addAuthorMutation({
variables: {
name: this.state.name,
age: this.state.age
},
awaitRefetchQueries: true,
refetchQueries: [
{
query: getAuthorsQuery
}
]
})
.then(() => this.submitBookAlso());