我正在与 NgRx 合作来实现 Redux。我正在尝试理解 redux 模式。为什么我们需要调度一个动作?为什么我们不能userReducer直接从下面的服务代码调用该函数并传递正确的操作?谢谢!服务代码: this.store.dispatch(new userActions.SetName({"bob"})用户.action.ts: readonly type = UserActionTypes.SET_NAME constructor(public payload: string) { } }用户.reducer.ts:export function userReducer( state: UserState = BEGINNING_STATE action: UserActions)switch(action.type) {case UserActionTypes.SET_NAME: return { ...state, Name: state.Name }}
1 回答
倚天杖
TA贡献1828条经验 获得超3个赞
您将“指示发生了某些事情”(操作)与“如果发生 X 则执行此操作”(减速器/中间件)分开。如果您直单击时会以特定方式更改状态。这种分离在大型复杂应用中具有许多优点。
Facebook 有一个大型应用程序,世界上多个地点的多人都在其中工作(Facebook 聊天),并且在这个应用程序中,有多个组件应该表明发生了某些事情,但实际上会直接更改状态或导致破坏其他人代码的副作用。所以他们想出了一个模式来解决这个问题。开发人员现在可以创建仅指示发生了某些事情的组件,以便其他开发人员可以编写在某些事情发生时需要执行的代码。
redux devtools 保存操作和结果状态,因此调试可以变得更容易。如果某些功能不起作用,您应该做的第一件事是检查开发工具,看看是否调度了正确的操作以及它们是否正确更改了状态。
使用操作和化简器写入状态只是一部分,您应该使用选择器以可组合和可重用的方式读取状态。
添加回答
举报
0/150
提交
取消