我有这样的类型:
declare type Relation = {
_id?: string,
root : string,
oPrimary :string,
nodes : [Ontology]
}
declare type Ontology = {
id : string,
ont : string[]
}
在我的reducer中,我有一个像这样定义的状态:
export interface RelatedBusinessState {
relation : Relation
}
我的组件更新了本文档中的字段,通常是插入或删除节点。数据存储在mongo db中,并且通过调用服务在@Effect中读取和写入db。
我不希望每次更改时都更新整个文档,但@addtoset或类似的更新。所以@Effect需要足够了解选择器,以及需要更改的特定字段。
在reducer函数中设置状态的最佳方法是什么?该状态是可观察的,因此任何更改都将反映在任何订户中。如果我在对象中添加一个键,比如编辑:{_ id:thisid,...}我在@Effect函数中得到了属性'编辑'在类型Relation上不存在。
@Effect保存数据并获取更新的文档,将其分派给更新状态的UPDATE_COMPLETE reducer函数。
编辑:我会尝试澄清。除了我的误解之外,可能根本没有问题。但是这里有。我订阅了状态,组件和视图将在reducer中更改状态时更新。
我的后端数据存储仅需要更改的数据来更新集合中的文档。
节点和本体将在组件中频繁且快速地更改;只是添加东西或删除一些东西。我希望视图能够快速反映变化。
因此组件中的动作调用看起来像这样,其中addNode是一个调度动作的函数。
addNode({ id : token, ont : ['Customer']});
动作创建者看起来像这样:
static ADD_NODE = '[Relations] Add Node';
addNode(node : Ontology) : Action {
return {
type : RelatedBusinessAction.ADD_NODE,
payload : node
}
}
@Effects是数据库调用的地方。
@Effect nodeadd$ = this.updates$
.whenAction(RelatedBusinessActions.ADD_NODE
.map<Relation>(toPayload)
我的问题是付费返回是什么?它是否返回reducer中设置的更新状态,还是返回操作的有效负载?
答案 0 :(得分:0)
我的问题是付费返回是什么?它是否返回reducer中设置的更新状态,还是返回操作的有效负载?
它只是返回action.payload。
export function toPayload(action: Action) {
return action.payload;
}