Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ngrx/商店-使用类的动作创建者与使用工厂功能的动作创建者?_Javascript_Angular_Reactjs_React Redux_Ngrx - Fatal编程技术网

Javascript Ngrx/商店-使用类的动作创建者与使用工厂功能的动作创建者?

Javascript Ngrx/商店-使用类的动作创建者与使用工厂功能的动作创建者?,javascript,angular,reactjs,react-redux,ngrx,Javascript,Angular,Reactjs,React Redux,Ngrx,我是Ngrx/Store的新手,因此在学习这种redux模式方法的过程中,我遇到了可以创建动作的动作创建者,这可以通过多种方式完成: 1)通过类创建操作。 class OrderFood implements Action { readonly type = OrderActionTypes.ORDER_FOOD; readonly payload: { dish: string }; constructor(dish: string) { this.payload = { dish }; }

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

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)通过工厂函数创建操作。

class OrderFood implements Action {
readonly type = OrderActionTypes.ORDER_FOOD;
readonly payload: { dish: string };
constructor(dish: string) {
this.payload = { dish };
 }
}
函数根据函数的输入返回操作对象并设置类型

const orderFood = ({ dish }: { dish: string }) => ({
type: OrderActionTypes.ORDER_FOOD,
payload: { dish }
});
然后再次分派我们调用函数的操作:

this.store.dispatch(orderFood({ dish: 'spaghetti carbonara' }));
所以我的问题是在这两种方式中,哪一种是最有效的创造行动的方式,它们之间的区别是什么


非常感谢您的帮助。

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

我们目前正在考虑使工厂功能方法成为NgRx中的一级成员-有关更多信息,请参阅