首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-router-redux推送与redux-batched action不兼容?

react-router-redux推送与redux-batched action不兼容?
EN

Stack Overflow用户
提问于 2017-02-22 15:22:22
回答 1查看 260关注 0票数 1

我正在构建一个react&redux应用程序,并且遇到了以下问题:在我的一个组件中,我想通过编程导航到另一个页面,并显示一个模式。

我发现在我的应用程序中使用两次操作并不能很好地工作,因为状态被更新了两次(导致我的模式渲染了两次,这会导致它消失)。

因此,我尝试使用redux-batched-actions来更新一次状态,方法是使用两个函数("push“和"openModal”类型的操作)调用batchActions。但是由于某些原因,在batchActions中调用"push“并不起作用。示例:

代码语言:javascript
复制
import { push } from 'react-router-redux';
import { batchActions } from 'redux-batched-actions'; 

myFunction: function() {
  this.props.newPath("/mypath");
}

const mapDispatchToProps = (dispatch) => {
    return {
        newPath: (path) => dispatch(batchActions([push(path)])),
    }
}

分派推送操作本身工作得很好,如下所示:

代码语言:javascript
复制
newPath: (path) => dispatch(push(path))

并且,在batchAction works中分派模态操作:

代码语言:javascript
复制
newPath: (path) => dispatch(batchActions([displayModal("title", "message"]))

因此,由于某种原因,batchActions似乎无法识别“推送”操作,而我不知道为什么。

有人能理解为什么batchActions不能正确处理“推”操作吗?

问候

EN

回答 1

Stack Overflow用户

发布于 2017-08-15 16:15:31

react-router-redux push操作由routerMiddleware处理。routerMiddleware仅根据类型查找特定于路由器的操作。另一方面,redux-batched-actions使用特殊的for redux-batched-actions类型将两个或多个动作包装在一个复合动作中。因此,当此操作通过中间件并且没有发生路由更改时,routerMiddleware不会将其识别为路由器操作。

https://github.com/ReactTraining/react-router/issues/5227中有一个描述问题的问题。

解决方案:

还有另一个包可以与react-redux-router一起用于批处理操作:react-batch-enhancer。它在一个中间件级别上工作,因此底层的批处理操作将由相应的中间件处理。

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

https://stackoverflow.com/questions/42385086

复制
相关文章

相似问题

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