【问题标题】:ngrx actions with optional payload带有可选负载的 ngrx 操作
【发布时间】: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 这是可能的。看看我下面的评论

标签: angular ngrx ngrx-store


【解决方案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({});

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多