【发布时间】:2019-01-26 01:59:55
【问题描述】:
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 } 放入组件中?
【问题讨论】:
-
您实际上可以在文档中阅读它。它说
mutate返回一个 Promise。因此,您可以使用.then从突变中获取结果,或者使用.catch以防出现错误。在加载的情况下,您可以使用组件状态来执行此操作,在mutate之前调用setState({ loading: true})并在其之后调用setState({ loading: false})。希望对您有所帮助! -
@qmateub 这是很好的信息。你应该把它写成答案。验证后,我会将您的答案标记为答案。
标签: reactjs graphql apollo react-apollo apollo-client