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 }
放入组件?
答案 0 :(得分:0)
变异是一个承诺,因此您可以在then内接收值,然后根据需要返回它们。 如果您具有异步和等待状态,则可以返回数据并使用等待状态,以便您可以以同步代码风格访问它。
SelectMany
答案 1 :(得分:0)
@allenylzhou
您实际上可以在文档中阅读它。它说该变异返回一个Promise。因此,您可以使用.then
来获取突变的结果,或者使用.catch
来获取错误信息。在加载的情况下,您可以使用组件状态来实现,即在mutate之前调用setState({ loading: true})
,在其之后调用setState({ loading: false})
。希望能帮助到你!