我有React路由器的Redux应用程序(基于https://github.com/este/este)。
在一条路线内,可能有超过1个AJAX呼叫(由redux-promise-middleware
& redux-thunk
触发)。当页面发生变化时(通过react-router
),我希望拒绝之前路线触发的所有剩余_SUCESS
或_FAILED
回调actions
。
这样做的最佳方式是什么?
答案 0 :(得分:0)
我建议您提取您感知页面感知的数据。这意味着在启动fetch的操作中,添加页面上下文。当reducer获取数据时,它可以为该页面上下文保存它,或者如果该位置与浏览器不同(意味着用户已导航),它可以将其丢弃。如果您保留不同页面/上下文的数据,如果用户返回(如果这是您想要的),您还可以获得这些奖励。
您正在使用网址" / pageX"。您开始获取数据,并且该操作确保在要调度SUCCESS操作时记住页面上下文。当reducer处理动作时,它将数据存储在store.context["/pageX"].data
(或类似)中。注意:如果当前位置与接收数据不同,您也可以将其丢弃(拒绝)。
用户界面应该知道如何从仅匹配其位置的上下文中询问/使用数据。
您可能还需要考虑跟踪应用状态中的浏览器位置...