4
关注
1978
浏览

ngrx/reducex操作环境的最佳做法

为什么被折叠? 0 个回复被折叠
jmt33 未验证用户 用户来自于: 广东省
2020-09-18 07:38
Here是一些模式和做法NGRX的链接。 它旨在按照您描述的方式工作。 this.actions$是一个Observable,所以无论你使用它,它都会发射出去。由于TodosActionTypes.ADD_TODO_ASYNC在home.effects.ts和sport.effects.ts中都是相同类型,所以它会在两个地方发射。 我不确定您可以避免在您的案例中单独采取行动,但可以减少样板代码的数量。 我会尝试这样的事: todos.actions.ts abstract class addTodoComplete{ constructor(readonly type: string){ //rest of the behavior } } abstract class addTodoFailed{ constructor(readonly type: string){ //rest of the behavior } } todos.sport-actions.ts const ADD_TODO = "[Sport] Add Todo"; const ADD_TODO_FAILED = "[Sport] Add Todo Failed"; class sportsAddTodoComplete extends addTodoComplete{ constructor(){ super(ADD_TODO); //rest of the behavior } } class sportsAddTodoFailed extends addTodoFailed{ constructor(){ super(ADD_TODO_FAILED); //rest of the behavior } } 也是一样的家庭版。 此外,你可能会有单独的SportTodosActionTypes和HomeTodosActionTypes。 你不会完全从“复制粘贴”中拯救你自己,但它应该在一定程度上有所帮助。 编辑: 至于减速,这是事实,使用这种方法,你将不得不写两个减速,但它并没有成为一个“复制 - 粘贴”的工作 sport.reducer.ts import { todoReducer } from './reducer'; export function sportsTodoReducer(state, action: SportTodoActionTypes.Actions){ todoReducer(state, action); } 类似的还适用于home版本。
馒头 未验证用户 用户来自于: 广东省
2020-09-17 05:36

在这些情况下的解决方法是用行动命名空间

行动常量充当行动的唯一标识符。由于应用程序中可能存在许多与存储的不同切片相对应的操作,因此我们可以通过使用操作命名空间的概念来防止重复操作逻辑故障的存储。检查了这一点:

// todos.actions.ts 
export const ADD_TODO = '[Home] Add Todo'; 

我们只是一个名称空间追加到行动常量,理想情况下,对应于商店的切片,我们使用的名称 - 您目前所在的功能模块的一般名称工作。

如果我们发现自己通过日志记录操作来调试应用程序,这个命名空间将清楚我们正在解决哪些存储切片和什么操作上下文,因为我们会看到类似这样的事情(假设我们将视图从“Home”以“体育”):

[Home] Add Todo 
[Home] Add Todo Success 
[Sport] Add Todo 
[Sport] Add Todo Success 

检查SOURCE更多的细节

yasin 未验证用户 用户来自于: 广东省
2020-09-16 02:53

要理解这个问题,您需要再次考虑您的应用程序体系结构。 一般可重复使用的减速器/动作不正确。

为什么这是不正确的?在目前看来,编写可重复使用的缩减器和动作,更少的样板,而不是“干”似乎很棒。在你的应用程序的例子。家和运动的'ADD_TO_DO'是平等的。

但在未来它将是危险的,认为你的老板/ costumers需要在体育add_to_do未来。如果您更改可重复使用的减速器中的逻辑。你的应用会崩溃。 (你可以用if语句来修补可重复使用的reducer,以使它可以正常工作,但是如果你的应用程序增长了,它将不会灵活/可读/维护)。

所以是的,你似乎需要在这种情况下写2个减速器和2个动作文件。在目前它充满平等,但在未来它将是优势和灵活性。

祝你好运!

关于作者

问题动态

发布时间
2020-09-15 15:51
更新时间
2022-09-15 16:04
关注人数
4 人关注
个人工作笔记 Powered BY WeCenter V4.1.0 © 2024 粤ICP备2020123311号