2017-12-27 9 views
0

、私は次のようしている。予想通りGraphQLの突然変異後に結果の結果が未定義になるのはなぜですか? Reduxの形式をonSubmit内の私の構成要素の一つで

const result = await helloSignup(values); 
console.log(result); 

helloSignupがデータベースを変異されるが、const resultが現在undefined

なぜとして記録されていますか?

マイHOC /突然変異helloSignup:GraphiQLを使用して

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; 
     }, 
    }), 
    } 
); 

が、私は私のgraphql変異は、望ましい結果を返すことがわかります。

{ 
    "data": { 
    "signup": { 
     "token": "xxx", 
     "user": { 
     "id": "16" 
     } 
    } 
    } 
} 

GraphiQLが変異後に所望の結果を得ている場合は、上記の結果がコンソールに記録されないのはなぜですか?

おかげ

+1

から戻ってくるべきであるいただきました!どこが反応-アポロを、右使用していますか?あなたは、コンポーネントレベルでどのように突然変異を起こしているのか分かりますか? 'client.mutate'ビット – lfender6445

+0

はい私はreact-apolloを使用しています – AnApprentice

+0

App.jsで' ' – AnApprentice

答えて

1

が反応-アポロはwithApolloと呼ばれるクライアント側のクエリおよび変異のためHOCを提供します。

withApollo(MyForm) 

https://www.apollographql.com/docs/react/basics/setup.html#withApollo

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

関連する問題