如何将变量传递给Apollo Mutation组件?

时间:2019-02-07 13:02:46

标签: reactjs graphql react-apollo apollo-client

从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 }}>

选择一种方式或另一种方式有什么原因?

1 个答案:

答案 0 :(得分:1)

您可以安全地使用向变量传递变量的任何一种方法。

大多数时候,我会使用变量prop来设置变量,因为这非常清楚和整洁。

您可能要使用其他方法的实例是从子组件中调用mutation方法时-该子组件中也包含变量。

继续上面提供的示例代码:想象一下ToDo列表上的一组组件,每个组件都有一个输入,但是调用一个突变(位于父组件中)。从每个子组件内部调用突变会更容易,例如:

updateToDoItem({variables: {id: this.props.id, text: this.state.text}})