Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何重置Apollo客户端的挂接程序_Reactjs_Graphql_Apollo_React Apollo_Apollo Client - Fatal编程技术网

Reactjs 如何重置Apollo客户端的挂接程序

Reactjs 如何重置Apollo客户端的挂接程序,reactjs,graphql,apollo,react-apollo,apollo-client,Reactjs,Graphql,Apollo,React Apollo,Apollo Client,我正在开发一种React形式,它与使用of的GraphQL突变相关联。在服务器上,我执行一些验证,如果出现错误,我拒绝变异。在客户端,我使用error对象来接收验证错误。我的钩子看起来像这样: const [addDrone, { error }] = useMutation(ADD_DRONE) 因此,我将error对象解包,并在一个对话框中将其呈现给用户,让他/她知道哪里出了问题。在用户取消对话框后,我想让用户有机会修复错误,以便他/她可以重新提交表单。这就是事情变得棘手的地方。当用户解除

我正在开发一种React形式,它与使用of的GraphQL突变相关联。在服务器上,我执行一些验证,如果出现错误,我拒绝变异。在客户端,我使用
error
对象来接收验证错误。我的钩子看起来像这样:

const [addDrone, { error }] = useMutation(ADD_DRONE)
因此,我将
error
对象解包,并在一个对话框中将其呈现给用户,让他/她知道哪里出了问题。在用户取消对话框后,我想让用户有机会修复错误,以便他/她可以重新提交表单。这就是事情变得棘手的地方。当用户解除对话框时,我想清除
错误
对象,但由于此变量来自
usemotation
钩子,因此我无法对其进行变异或重置。看起来
useVaritation
被设计为只发射一次,不再使用


所以我的问题是,有没有办法“重置”一个
useMutation
挂钩回到它的原始状态?

从2020年12月26日起,没有办法重置一个
useMutation
,但是阿波罗功能请求repo上有两个功能请求请求一个,因此这在未来可能会改变

现在实现此行为的最简单方法是删除
error
变量,并改用处理程序。这是由使用相同的
error
对象的
usemotation
提供的回调。然后,您可以将其连接到您自己的有状态变量,这将为您提供完全相同的
error
变量以及使用
setError
清除该变量的能力。请参见下面的示例:

  const [error, setError] = React.useState(null)
  const [addDrone] = useMutation(ADD_DRONE, {
    onError: setError,
  })
如果您希望同时重置
数据
对象,则可以引入另一个有状态元组
[data,setData]
,并将
setData
连接到
onCompleted
回调