commitMutation防止setState在handleSubmit中重新呈现组件



我正在尝试在Relay中实现一个表单,当您单击提交按钮时,文本将被加载图标替换。

处理提交功能:

const handleSubmitNewDetails = (e) => {
e.preventDefault();
setIsDetailsInFlight(true); // Show loading icon
commitUpdateDetails(
{
name: name,
email: email,
dob: dob,
},
() => { setIsDetailsInFlight(false) }, // on completed
() => { setIsDetailsInFlight(false) }, // on error
);

};

我的handleSubmit函数应该设置突变的";飞行中";状态为true。这会在commitUpdateDetails不存在时导致重新发布,从而成功呈现加载图标。如果存在commitupdateDetails,则此操作不起作用。

commitUpdateDetails有效,我添加了一个人为的响应时间延迟来测试加载图标,所以延迟不是问题。

我猜,除非句柄函数完成,否则relay或react不会完成允许重新转发器的状态设置,即使在等待异步函数时也是如此?如果是的话,有没有办法绕过这个。。。?

更新:

在回调中不使用setState挂钩会导致加载图标出现,所以我想react/rerelay正在处理这个问题,不知道如何制定解决方案。

更新2:

使用setTimeout而不是commitMutation设置一个简单的处理程序效果很好,所以我不明白为什么在等待突变完成时不会发生渲染。

在promise中封装commitMutation(在commitUpdateDetails中调用(是有效的。我不知道为什么它以前不起作用。一个很好的解释:(

相关内容

  • 没有找到相关文章

最新更新