Apollo 客户端:mutate 不是函数

Posted

技术标签:

【中文标题】Apollo 客户端:mutate 不是函数【英文标题】:Apollo client: mutate is not a function 【发布时间】:2018-02-11 00:17:02 【问题描述】:

我从通过参数字段传递道具的父组件调用此组件。但是,当我尝试调用突变函数时,我不断收到错误消息:mutate is not a function。我不明白是什么导致了这个问题,因为我几乎完全按照在线的 apollo 文档进行操作。

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

【问题讨论】:

【参考方案1】:

当您使用 graphql HOC 包装组件时,它会收到 data 道具(如果您的操作是查询)或 mutate 道具(如果您的操作是突变)。

您的代码表明您希望将第二个对象(而不是 props)作为参数传递给您的组件:

const OnboardingComplete = (props,  mutate ) => 

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

const OnboardingComplete = (props) => 

您应该通过调用props.mutate 访问mutate。如果你想使用对象解构,你也可以这样做:

const OnboardingComplete = ( first_name, last_name, id, mutate ) => 

【讨论】:

【参考方案2】:

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

   async function createApolloClient(...)

这会导致错误。

   function createApolloClient(...)

没有错误……很奇怪,但它解决了。

【讨论】:

以上是关于Apollo 客户端:mutate 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 客户端突变错误和更新组件

错误:createNetworkInterface 不是 React Native 和 Apollo 客户端上的函数

在客户端处理 apollo-server 错误

Apollo 客户端递归突变

执行突变时 Apollo 客户端错误

Apollo 客户端乐观响应如何工作