如何从graphql()

时间:2018-08-19 22:19:32

标签: reactjs graphql apollo react-apollo apollo-client

React Apollo Mutations允许我创建一个接受{ data, loading, error }作为道具的MutationResult的组件:https://www.apollographql.com/docs/react/api/react-apollo.html#mutation-render-prop

现在,如果我要使用graphql()创建的高阶组件

function MyComponent({ mutate }) {
  return (
    <button onClick={() => {
      mutate({
        variables: { foo: 42 },
      });
    }}>
      Mutate
    </button>
  );
}

export default graphql(gql`mutation { ... }`)(MyComponent);

我的组件只会有mutate作为道具。如何将{ data, loading, error }放入组件?

2 个答案:

答案 0 :(得分:0)

变异是一个承诺,因此您可以在then内接收值,然后根据需要返回它们。 如果您具有异步和等待状态,则可以返回数据并使用等待状态,以便您可以以同步代码风格访问它。

SelectMany

答案 1 :(得分:0)

@allenylzhou

您实际上可以在文档中阅读它。它说该变异返回一个Promise。因此,您可以使用.then来获取突变的结果,或者使用.catch来获取错误信息。在加载的情况下,您可以使用组件状态来实现,即在mutate之前调用setState({ loading: true}),在其之后调用setState({ loading: false})。希望能帮助到你!