【问题标题】:Default arguments within a Redux action creatorRedux 操作创建器中的默认参数
【发布时间】:2016-10-26 00:32:41
【问题描述】:

动作创建者设置默认参数是否有任何不良副作用?或者甚至在动作创建者中使用Object.assign

例如,我们有一个名为 notify() 的操作创建者,它在我们的商店中创建通知。

虽然我们需要这些通知的默认参数,但我们有一个名为 createNotice 的单独函数来处理这个问题。

我们的 action create 看起来像这样:

export function notify(notification) {
  return {
    type: ADD,
    notification,
  };
}

我们的createNotice 看起来像这样:

export function createNotice(title = '', message, level = 'info', settings = {}) {
  return merge({}, {
    title,
    message,
    key: (new Date).getTime(),
    action: 'Dismiss',
    dismissAfter: 5000,
    className: level,
  }, settings);
}

真的不喜欢必须导入 createNoticenotify 并绑定 notify 来调度每个使用它来执行以下操作的组件:

<Button onClick={() => nofity(createNotice('Something Happened', 'I think it worked!'))} />

应该是这样的:

<Button onClick={() => nofity('Something Happened', 'I think it worked!')} />

通过这样的动作创建者:

export function notify(notice) {
  return {
    type: ADD,
    createAction(notice),
  };
}

但这对我来说像是一种 redux 反模式?

【问题讨论】:

    标签: javascript reactjs redux state immutability


    【解决方案1】:

    您的createNotice 函数实际上只是notify 的辅助函数。

    您的第一种方法对我来说毫无意义,因为您的组件不需要知道createNotice

    你的第二种方法是我会做的。但是您可能想传播...createNotice(notice) 或给它一个名字

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 2016-04-03
      • 1970-01-01
      • 2013-09-25
      • 2017-02-02
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      相关资源
      最近更新 更多