如何在Redux应用程序中延迟加载数据?

时间:2016-10-07 10:36:40

标签: redux

我们说我得到了

IClientState: {
   firstName: string,
   lastName: string,
   details: IClientDetailsState
}

并且让我们进一步假设从服务中检索firstNamelastName是便宜的,因此一个操作会将一个fel扫描中的所有客户端加载到父状态

xxxxState: {
   clients: IClientState[],
   ...
}

但是,为任何一个客户端检索details都非常昂贵,例如,在列表中显示它们并不是完全需要的。

我该如何解决这个问题?我正考虑将loadingloaded属性添加到IClientDetailsState并检查需要此数据的组件中的属性;如果两个属性都应该产生false,那么该组件将触发动作加载细节。

问题是,从组件的角度来看,这个检查相当复杂,对我而言,这是一个警告信号,表明不应该这样做。

所以是的,我该如何以正确的方式处理这个问题?

1 个答案:

答案 0 :(得分:1)

我不认为问题与redux有关,相反我认为你需要重新思考你的状态。

我会通过引入一些新类型来解决问题,例如:

IClientBase: {
   firstName: string,
   lastName: string
}

IClientListItem extends IClientBase: {
   index: integer
}

IClientList{
   items: IClientListItem[]
}

IClient extends IClientBase{
   details: IClientDetails
}

现在,您可以收集便宜IClientListItem的列表,当用户选择某个项目时,您可以将其转换为IClient并使用相应的客户详细信息进行充气。