首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何导出减速器功能,并将其添加到storeModule.forRoot的角度?

如何导出减速器功能,并将其添加到storeModule.forRoot的角度?
EN

Stack Overflow用户
提问于 2021-08-24 09:38:43
回答 2查看 297关注 0票数 0

我是新的ngrx和阅读从他们的网站ngrx.io的ngrx文档。我在他们的还原器里偶然发现了一些代码,我不明白。

这是counter.actions.ts文件

代码语言:javascript
代码运行次数:0
运行
复制
import { createAction } from '@ngrx/store';

export const increment = createAction('[Counter Component] Increment');
export const decrement = createAction('[Counter Component] Decrement');
export const reset = createAction('[Counter Component] Reset');

这是counter.reducer.ts文件。

代码语言:javascript
代码运行次数:0
运行
复制
import { createReducer, on } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
 
export const initialState = 0;
 
const _counterReducer = createReducer(
  initialState,
  on(increment, (state) => state + 1),
  on(decrement, (state) => state - 1),
  on(reset, (state) => 0)
);
 
export function counterReducer(state, action) {
  return _counterReducer(state, action);
}

这是app模块文件

代码语言:javascript
代码运行次数:0
运行
复制
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
 
import { AppComponent } from './app.component';
 
import { StoreModule } from '@ngrx/store';
import { counterReducer } from './counter.reducer';
 
@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, StoreModule.forRoot({ count: counterReducer })],
  providers: [],
  bootstrap: [AppComponent],
})
export class AppModule {}

我的问题如下:

  1. 是什么
代码语言:javascript
代码运行次数:0
运行
复制
export function counterReducer(state, action) {
  return _counterReducer(state, action);
}

在减速机的档案里?

  1. 需要counterReducer吗?
  2. 为什么不直接导出_counterReducer并将其添加到应用程序模块文件中的storeModule.forRoot中。

我在ngrx网站上阅读有关行动的文章时看到了这些。

导出的还原器函数是必需的,因为函数调用不支持View Engine AOT编译器。如果您使用默认的Ivy AOT编译器(或JIT),则不再需要它。

这是一个可能的解释吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-24 11:38:54

我相信下面的方法是有效的,没有真正的意义通过另一个函数进行再导出,因为这并没有真正做任何事情。

代码语言:javascript
代码运行次数:0
运行
复制
import { createReducer, on } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
 
export const initialState = 0;
 
const counterReducer = createReducer(
  initialState,
  on(increment, (state) => state + 1),
  on(decrement, (state) => state - 1),
  on(reset, (state) => 0)
);
票数 2
EN

Stack Overflow用户

发布于 2021-08-24 11:59:52

1,2)。你的还原器必须导出约简方法/功能。您可以像@wscttc建议的那样导出它。如果还原器返回一个更复杂的对象,甚至可以为响应添加一个类型。

代码语言:javascript
代码运行次数:0
运行
复制
import { createReducer, on } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
 
const initialState = 0;
 
export const counterReducer = createReducer<number>(
  initialState,
  on(increment, (state) => state + 1),
  on(decrement, (state) => state - 1),
  on(reset, (state) => 0)
);

3)。其主要思想是具有特征状态。随着应用程序的增长,使用自己的还原剂、效果、动作的几个特性状态将是明智的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68905207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档