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