首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用React-Query等待某些东西?

如何使用React-Query等待某些东西?
EN

Stack Overflow用户
提问于 2020-12-31 19:51:29
回答 2查看 1.6K关注 0票数 0

到目前为止,我对查询的反应是新的,并且很喜欢它。我知道它主要是一个UI库。所以它非常适合处理/显示错误,加载状态。但我经常发现自己想要以一种异步的方式等待一些特定的动作。因此,我希望能够在触发操作之前等待返回的承诺,例如重定向。

下面是一个示例:

代码语言:javascript
复制
const NewPostForm = props => {
  const history = useHistory();
  const mutatePostInfo = useUpdatePost(); // useMutate hook
  const [value, setValue] = useState("")
  
  const handleSubmit = () => {
    mutatePostInfo.mutate(value);
    // I WANT TO: wait for the action to complete before redirecting
    history.push("/new-route/")
  }
  
  return (
    <form onSubmit={handleSubmit}>
      <input value={value} onChange={(e) => setValue(e.target.value)} />
    </form>
  )
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-31 21:04:39

useMutation返回的mutate函数将options作为第二个参数,您可以使用onSuccess选项在突变成功时执行某些操作:

代码语言:javascript
复制
mutatePostInfo.mutate(
    value,
    {
        onSuccess: () => history.push("/new-route/")
    }
);

还有onError (表示错误)和onSettled回调(如果您想在成功或错误的情况下重定向)。

票数 3
EN

Stack Overflow用户

发布于 2021-06-18 01:25:06

为了等待没有onSuccess函数的其他值或函数完成,您可以使用依赖查询暂停查询,直到该值存在/符合您的条件。

https://egghead.io/lessons/react-use-dependent-queries-to-delay-react-query-s-usequery-from-firing-on-render

代码语言:javascript
复制
const [payload, setPayload] = useState();
const someFunc = () => setPayload("data");

const { data } = useQuery(payload && ["queryKey", { payload }],
    queryName
  );

someFunc();

在发送它的queryName请求之前,您也可以传入一个带有返回值的函数,该函数将等待该返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65520516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档