假设您需要在UI中加载一些信息。
为此,您从数据库中检索实体A
的列表,然后在该列表中进行一些处理(如过滤和进行一些计算以创建计算属性),然后对结果列表中的每个元素进行处理A2
的{{1}},你从数据库中检索实体B
,然后再做一些计算。之后,您发送该信息以更新UI。
以下是步骤列表中解释的相同内容:
A
转换为PresentationA
A
A
A
到A2
B
A2.bID
A2
/ B
创建PresentationA
PresentationA
换句话说,我必须在处理逻辑的中间有条件地调用数据库。
我如何在Redux中使用它?
最初我想将动作发送为RetrieveListOfA
,但即使我在动作创建器中检索A
并将该信息传递给reducer,我仍然需要访问数据库再次为实体B
,这不能由reducer完成。
检索A
列表,发送到reducer,然后让reducer保存(有一些回调,其中将插入其余的处理),对我来说也没有多大意义状态树,只是发送另一个动作来继续处理。
如果示例不是很清楚,请告诉我。
添加一些代码:
struct A {
let id: String
let someProperty: Bool
let x: Int
let y: Int
}
struct A2 {
let id: String
let r: Int
}
struct B {
let r: Int
let someValue: String
}
struct PresentationA {
let r: Int
let v: String
}
let listA = [A]() // get from database
let listPresentationA = listA
.filter({ a in
return a.someProperty
})
.map({ a in
return A2(id: a.id, r: a.x + a.y)
})
.map({ a2 in
let b = B(r: 0, someValue: "") // get B associated with a2.id form database
return PresentationA(r: a2.r + b.r, v: b.someValue)
})
// display listPresentationA in the UI