带有可选负载的 ngrx 操作

Posted

技术标签:

【中文标题】带有可选负载的 ngrx 操作【英文标题】:ngrx actions with optional payload 【发布时间】:2020-08-02 21:17:48 【问题描述】:

我正在使用 Angular 8 和 NgRx 8,是否可以使用可选有效负载创建操作? 我正在尝试做类似的事情:

export const MyAction = createAction('[Action ] MyAction', props< prop?: string >());

但不幸的是不起作用。 你能帮帮我吗?

【问题讨论】:

恐怕这是不可能的。我有完全相同的问题 - 我只是传递了空对象。但是你的问题促使我去问专家,他证实这可能是不可能的。最好和最干净的选择似乎是要么发送空对象,要么只创建 2 个动作 - 一个有道具,另一个没有道具。 twitter.com/dutch_guy/status/1252207780213088256?s=21 @Vinni 这是可能的。看看我下面的评论 【参考方案1】:

基于this post,有一个可选的有效负载定义。

例子:

export const FetchPlayersAction = createAction(
  '[Players.List] FETCH_PLAYERS',
  (payload: ListingOptions = ) => payload, // defined optional payload
);

【讨论】:

根据文章看起来应该是(payload: ListingOptions = ) =&gt; (payload) @satanTime 取决于您和您的使用情况 :) 但是,如果文章是来源的话。我需要它,就像在示例中一样:)【参考方案2】:

可以使有效负载中的键成为可选的,但不能使有效负载对象本身成为可选的。所以解决方案可以是这样的,我们希望payload对象中的错误是可选的。

export const listenForFeatureFailure = createAction(
    '[Feature] listen for feature Failure',
    props< error?: any >()
);

在您的效果中,您可以使用或不使用error 来调用它

...
ProductSubscriptionActions.listenForFeatureAccessUpdatedFailure(error);
// or
ProductSubscriptionActions.listenForFeatureAccessUpdatedFailure();

【讨论】:

以上是关于带有可选负载的 ngrx 操作的主要内容,如果未能解决你的问题,请参考以下文章

更新 ngrx/store 中的对象

NgRx 无法从商店中选择

SharePoint 2013 搭建负载均衡(NLB)

API 设计 - 客户端请求中的可选正文 - 验证失败时返回的状态码

负载均衡

nodejs负载均衡:服务负载均衡