【发布时间】:2023-03-15 01:34:01
【问题描述】:
自 2.1 版以来,Apollo Client 使用 React 的渲染道具模式。
官方Apollo Client documentationvariables作为参数传递给变异函数:
addTodo({ variables: { type: input.value } });
然而各种教程,包括How to GraphQL,将它们作为道具传递:
<Mutation mutation={POST_MUTATION} variables={{ description, url }}>
选择一种方式或另一种方式的原因是什么?
【问题讨论】:
-
它们不是相互排斥的。当您调用在渲染道具中传递给您的 mutate 函数时,可以覆盖作为道具传递的变量,因此您可以将第二种形式视为提供默认值。在实践中,我从未使用过第二种形式,我通常发现自己将 Mutation 组件包装在一个表单周围,并在提交表单时调用 mutate 函数。但是,当事先知道这些变量并且不需要或已知用户输入时,将变量作为 props 传递可能会有一些用处,例如注销突变或“喜欢”操作。
标签: reactjs graphql react-apollo apollo-client