【发布时间】: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);
}
我真的不喜欢必须导入 createNotice 和 notify 并绑定 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