我有一个用例,我想用最新的redux状态进行服务器调用。我想到了将状态副本传递给方法流,然后使用状态调用动作创建器。在实际的服务器调用发生之前,状态值可能已经更改。
获取状态副本的一种可能方法是在进行服务器调用之前在操作中使用getState()。但是,通过这种方法,我将公开一种反模式的全局状态。
有什么更好的方法吗?
举个例子,我的代码如下:
App.js
executeAction(selectedData)
actions.js
function executeAction(selectedData) {
// execute Worker threads
// Takes around 20 seconds
onWorkerThreadResolution(selectedData)
}
function onWorkerThreadResolution(selectedData) {
// Make server call with selectedData as an argument
}
很可能有人通过另一个UI操作以redux状态更新了selectedData。
答案 0 :(得分:0)
根据Redux doc操作是普通的JavaScript对象。因此,我认为您是指动作创建者,在您的情况下为async action creator。
常见的逻辑是使用Redux-thunk进行服务器调用。进行服务器调用时,仅将必需的参数传递给它,而不传递完整状态。呼叫成功或错误完成后,您将使用新数据呼叫操作创建者的调度。最好的方法是将Promise从服务器调用函数返回给动作创建者。 (服务器调用可能无法通过示例来实现。具体取决于您如何实现。)
因此,当服务器提供某些响应或请求超时时,状态将更改。