大家好,我是这个Apollo-GraphQL的新成员,我正在尝试使用我的React Native应用程序实现我的服务器。
当我尝试构建密码更改功能时,出现以下错误this.props.resetPassword is not a function. (In 'this.props.resetPassword(_id, password)', 'this.props.resetPassword' is undefined)
我的代码如下
toSend() {
const { _id } = this.props.data.me;
const { password } = this.state;
console.log(_id, password)
this.props
.resetPassword(_id, password)
.then(({ data }) => {
return console.log(data);
})
}
这是我的查询和突变
export default graphql(
gql`
query me {
me {
_id
}
}
`,
gql`
mutation resetPassword($_id: String!, $password: String!) {
resetPassword(_id: $_id, password: $password) {
_id
}
}
`,
{
props: ({ mutate }) => ({
resetPassword: (_id, password) => mutate({ variables: { _id, password } }),
}),
},
)(PasswordChange);
答案 0 :(得分:0)
如果您使用的是graphql
HOC,则需要使用compose
来组合多个查询/变异。例如:
const mutationConfig = {
props: ({mutate, ownProps}) => ({
resetPassword: (_id, password) => mutate({ variables: { _id, password } }),
...ownProps,
})
}
export default compose(
graphql(YOUR_QUERY, { name: 'createTodo' }),
graphql(YOUR_MUTATION, mutationConfig),
)(MyComponent);
请记住,HOC默认会传递它收到的所有道具,但是如果您在配置中为props
提供了一个功能,那么您就可以利用ownProps
来做到这一点。另外,在使用compose
时,如果HOC的任何一个依赖于其他道具,则HOC的顺序很重要。这意味着,只要您的查询排在compose
内部,您就可以在突变的配置中使用查询HOC的data
。