Ngrx / store-使用Class的Action创建者与使用Factory函数的Action创建者?

时间:2019-03-25 09:36:54

标签: javascript angular reactjs react-redux ngrx

我是Ngrx / Store的新手,因此在学习这种Redux模式方法的过程中,我遇到了可以创建动作的Action创建者,并且可以通过多种方式完成操作:

1)通过类创建动作。

class OrderFood implements Action {
readonly type = OrderActionTypes.ORDER_FOOD;
readonly payload: { dish: string };
constructor(dish: string) {
this.payload = { dish };
 }
}

然后为了分派操作,我们必须创建该类的新实例:

this.store.dispatch(new OrderFood ({ dish: 'spaghetti carbonara' }));

2)通过工厂功能创建动作。

该函数根据函数的输入返回操作对象并设置类型。

const orderFood = ({ dish }: { dish: string }) => ({
type: OrderActionTypes.ORDER_FOOD,
payload: { dish }
});

然后再次调度我们称为函数的动作:

this.store.dispatch(orderFood({ dish: 'spaghetti carbonara' }));

所以我的问题是这两种方式中的哪一种,哪一种是创建动作的最有效方式,两者之间有什么区别?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

它们的作用完全相同,唯一的区别是动作是通过类或函数创建的。

我们目前正在研究使工厂函数成为NgRx中的一等成员-有关更多信息,请参见https://github.com/ngrx/platform/pull/1570