为什么在 GraphQL 突变后结果记录为未定义?
Why are Results logging as undefined after a GraphQL Mutation?
在我的一个 redux-form onSubmit 组件中,我有以下内容:
const result = await helloSignup(values);
console.log(result);
helloSignup 正在按预期改变数据库,但 const result
当前被记录为 undefined
为什么?
我的 HOC/mutation helloSignup:
export const HELLO_SIGNUP_MUTATION = gql`
mutation (
$email: String!
$code: String!
) {
signup(authProvider: {
emailAndCode: {
email: $email
code: $code
}
}) {
token
user {
id
}
}
}
`;
export default graphql(
HELLO_SIGNUP_MUTATION,
{
props: ({ mutate }) => ({
emailAndCodeSignup: async (variables) => {
const { data } = await mutate({ variables });
const { token } = data.signup;
},
}),
}
);
使用 GraphiQL,我可以看到我的 graphql 突变,returns 期望的结果:
{
"data": {
"signup": {
"token": "xxx",
"user": {
"id": "16"
}
}
}
}
如果 GraphiQL 在变异后得到了想要的结果,为什么上面的控制台没有记录结果?
React-Apollo 为客户端查询和变更提供了一个 HOC,称为 withApollo
。
这个签名是这样的:
withApollo(MyForm)
https://www.apollographql.com/docs/react/basics/setup.html#withApollo
将 'client' 的属性添加到 MyForm 组件。在提交表单时,您想要访问这个道具,并从那里调用突变。所以在你的表单提交处理程序中你最终会得到这样的东西:
https://www.apollographql.com/docs/react/basics/mutations.html#basics
onSubmit() {
const { client } = this.props
const options = {} // your mutation options
// mutations ands queries return promises,
// so you must wait for their completion before accessing data
client.mutate(
HELLO_SIGNUP_MUTATION,
options
).then(({ data }) => (
console.log('got data', data);
)
}
}
从 API
返回的数据应该在哪里
在我的一个 redux-form onSubmit 组件中,我有以下内容:
const result = await helloSignup(values);
console.log(result);
helloSignup 正在按预期改变数据库,但 const result
当前被记录为 undefined
为什么?
我的 HOC/mutation helloSignup:
export const HELLO_SIGNUP_MUTATION = gql`
mutation (
$email: String!
$code: String!
) {
signup(authProvider: {
emailAndCode: {
email: $email
code: $code
}
}) {
token
user {
id
}
}
}
`;
export default graphql(
HELLO_SIGNUP_MUTATION,
{
props: ({ mutate }) => ({
emailAndCodeSignup: async (variables) => {
const { data } = await mutate({ variables });
const { token } = data.signup;
},
}),
}
);
使用 GraphiQL,我可以看到我的 graphql 突变,returns 期望的结果:
{
"data": {
"signup": {
"token": "xxx",
"user": {
"id": "16"
}
}
}
}
如果 GraphiQL 在变异后得到了想要的结果,为什么上面的控制台没有记录结果?
React-Apollo 为客户端查询和变更提供了一个 HOC,称为 withApollo
。
这个签名是这样的:
withApollo(MyForm)
https://www.apollographql.com/docs/react/basics/setup.html#withApollo
将 'client' 的属性添加到 MyForm 组件。在提交表单时,您想要访问这个道具,并从那里调用突变。所以在你的表单提交处理程序中你最终会得到这样的东西:
https://www.apollographql.com/docs/react/basics/mutations.html#basics
onSubmit() {
const { client } = this.props
const options = {} // your mutation options
// mutations ands queries return promises,
// so you must wait for their completion before accessing data
client.mutate(
HELLO_SIGNUP_MUTATION,
options
).then(({ data }) => (
console.log('got data', data);
)
}
}
从 API
返回的数据应该在哪里