0

我有这样的类型:

declare type Relation = {
_id?: string,
root : string,
oPrimary :string,
nodes : [Ontology]

}

declare type Ontology = {
    id : string,
    ont : string[]
}

在我的减速器中,我有一个这样定义的状态:

export interface RelatedBusinessState {
relation : Relation

}

我的组件更新本文档中的字段,通常插入或删除节点。数据存储在 mongo db 中,通过调用服务在 @Effect 中完成对 db 的读取和写入。

我不希望每次有小的变化时都更新整个文档,而是 @addtoset 或类似的。所以@Effect 需要对选择器有足够的了解,以及需要更改的特定字段。

在 reducer 函数中设置状态的最佳方法是什么?状态是可观察的,因此任何更改都将反映在任何订阅者中。如果我在对象中添加一个键,比如编辑:{_id:thisid,...} 我在@Effect 函数中收到打字稿错误,即属性“编辑”在类型关系上不存在。

@Effect 保存数据并获取更新的文档,将其分派给更新状态的 UPDATE_COMPLETE 减速器函数。

编辑:我会尽力澄清。除了我的误解之外,可能根本没有问题。但是这里。

我订阅了状态,当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)

我的问题是 toPayload 返回什么?它是返回reducer 中设置的更新状态,还是返回动作的有效负载?

4

1 回答 1

0

我的问题是 toPayload 返回什么?它是返回reducer 中设置的更新状态,还是返回动作的有效负载?

它只是返回 action.payload。

export function toPayload(action: Action) { return action.payload; }

toPayload 方法

于 2016-10-30T19:05:02.467 回答