从2.1版开始,Apollo Client使用React的render props模式。
在官方Apollo Client documentation variables
上,将其作为参数传递给变异函数:
addTodo({ variables: { type: input.value } });
无论如何,包括How to GraphQL在内的各种教程都将其作为道具传递:
<Mutation mutation={POST_MUTATION} variables={{ description, url }}>
选择一种方式或另一种方式有什么原因?
答案 0 :(得分:1)
您可以安全地使用向变量传递变量的任何一种方法。
大多数时候,我会使用变量prop来设置变量,因为这非常清楚和整洁。
您可能要使用其他方法的实例是从子组件中调用mutation方法时-该子组件中也包含变量。
继续上面提供的示例代码:想象一下ToDo列表上的一组组件,每个组件都有一个输入,但是调用一个突变(位于父组件中)。从每个子组件内部调用突变会更容易,例如:
updateToDoItem({variables: {id: this.props.id, text: this.state.text}})