Apollo客户端:mutate不是一个函数

时间:2017-09-01 22:14:51

标签: react-native graphql graphql-js apollo apollo-client

我从通过参数字段传递props的父组件调用此组件。但是,当我尝试调用变异函数时,我不断收到错误:mutate不是函数。我不明白是什么导致了这个问题,因为我几乎完全按照网上的阿波罗文档。

const OnboardingComplete = (props, { mutate }) => {

  const currentUser = {
   id: props.id,
   firstName: props.first_name,
   lastName: props.last_name
  }


return (

 <View style={styles.subcontainer}>
        <Button bordered rounded iconLeft
      style={styles.importButton}
      onPress={() => 
        mutate({ variables: { user: currentUser } })
        }>
        <Text style={styles.buttonText}>Complete  </Text>
        <Icon name='arrow-forward' />
      </Button>
      </View>

);
}


const addUser = gql`
  mutation addUser($user: UserInput!) {
    addUser(input: $user) 
  }
`;

  export default graphql(addUser)(OnboardingComplete);

2 个答案:

答案 0 :(得分:1)

当您使用df[with(df, order(-ave(alpha, ID))),] HOC包装组件时,它会收到graphql道具(如果您的操作是查询)或data道具(如果您的操作是突变) )。

您的代码表明您希望第二个对象(道具除外)作为参数传递给您的组件:

mutate

相反,您的表达式应如下所示:

const OnboardingComplete = (props, { mutate }) => {

您应该致电const OnboardingComplete = (props) => { 访问mutate。如果您想使用对象解构,您也可以随时执行:

props.mutate

答案 1 :(得分:0)

这也是我这边的问题。 我得到了解决方案,因为我将 createApolloClient 作为异步函数,它不应该是异步函数。然后工作正常!

   async function createApolloClient(...)

这会导致错误。

   function createApolloClient(...)

没有错误......奇怪但它解决了它。