首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React redux钩子useDispatch函数完成后如何调用

React redux钩子useDispatch函数完成后如何调用
EN

Stack Overflow用户
提问于 2020-02-25 01:43:55
回答 3查看 4K关注 0票数 1

在我用于示例的代码中,我有一个用于添加新属性的属性表单,在它将其保存在数据库中之后,我想用新属性更新redux存储,并将用户发送到属性页面,其中列出了所有属性,但我想在分派(addProperty(SavedProperty))之后执行此操作,然后我可以执行history.push("/properties")。我怎么能在那里等到调度结束。我正在使用react-redux中的useDispatch。

代码语言:javascript
复制
 async function handlePropertyFormSubmit(values) {
    const savedProperty = await savePropertyGraphQlPromise(values);
    if (savedProperty) {
      dispatch(reset("property"));//reset property form
      dispatch(addProperty(savedProperty));
      //here I want to wait the dispatch finish and then send user to the properties page.
      history.push("/properties");
    }
  }
EN

回答 3

Stack Overflow用户

发布于 2020-02-25 01:51:18

用setTimeout包装您的第二个分派,类似于这个firstDispatch() setTimeout(secondDispatch)

票数 0
EN

Stack Overflow用户

发布于 2020-02-25 01:51:55

您可以使用类似分派的dispatched: false创建一个‘dispatch’,并在完成您的signal时将其设置为true (如果您打算在更多组件中使用此属性,则在重定向后取消设置它)。如果您使用的是react路由器,则可以将<Redirect to="yourNewURL" />呈现为重定向(基于redux store state有条件地呈现它)。

票数 0
EN

Stack Overflow用户

发布于 2020-02-25 02:14:03

看起来你正在使用async/await,所以你也应该能够使用它来等待调度。

代码语言:javascript
复制
 async function handlePropertyFormSubmit(values) {
    const savedProperty = await savePropertyGraphQlPromise(values);
    if (savedProperty) {
      await dispatch(reset("property"));//reset property form
      await dispatch(addProperty(savedProperty));

      history.push("/properties");
    }
  }

如果addProperty操作返回一个promise (比如thunk),那么您也可以使用then方法。

代码语言:javascript
复制
dispatch(addProperty(savedProperty)).then(() => {
 history.push('/properties')
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60381315

复制
相关文章

相似问题

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