是否可以将变量传递给 react-apollo 的 "children" 道具?

Is there away to pass variables into the "children" props for react-apollo?

想知道是否有办法将额外的数据传递到 UI 触发突变的函数中。请参阅下面的示例。

        <Mutation 
            mutation={COMPLETE_EVALUATION}
            variables={{studentId:courses.course.studentId, courseId: courses.course.courseId, passed:true, checkpoints:courses.evals}}>
             {(completeEval, {error, loading}) => (
                <div className="competency-actions ml-32 mr-64">
                    <Button className="w-128 mr-16 pass-button" variant="contained" onClick={() => completeEval(true)}>
                        PASS
                    </Button>
                    <Button className="w-128 ml-16 fail-button" variant="contained" onClick={() => completeEval(false)}>
                        REMEDIATE
                    </Button>
                </div>
            )} 
        </Mutation>

我想根据点击的按钮为突变提供额外的信息。我走的路是正确的还是有其他方法可以完成设置该值?

传递给 Mutation 组件的 render props 函数的第一个参数是 mutate 函数。这个函数可以在没有额外参数的情况下调用,但它也可以接受一个选项对象。此选项对象可以具有以下属性:

  • variables
  • optimisticResponse
  • refetchQueries
  • update

这些选项与可以直接传递给 Mutation 组件的道具相同。事实上,如果通过 mutate 函数提供了一个选项,如果还提供了一个选项,它将覆盖其对应的 Mutation 组件属性。

这意味着您可以 省略 组件中的 variables 属性,而是在调用 mutate 函数时传入变量:

completeEval({
  variables: {
    studentId:courses.course.studentId,
    courseId: courses.course.courseId,
    checkpoints:courses.evals,
    passed: true,
  }
})

有关详细信息,请参阅 docs