首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代ngrx8缩减程序

迭代ngrx8缩减程序
EN

Stack Overflow用户
提问于 2019-09-21 15:22:51
回答 1查看 44关注 0票数 0

接口:

代码语言:javascript
运行
复制
export interface IClient extends Array<IClient> {
  client_name: string
}

操作:

代码语言:javascript
运行
复制
export const addClientSuccess = createAction(
  '[CLIENT] ADD_CLIENT_COMPLETE',
  props<{ client_name: IClient }>()
);

减速机:

代码语言:javascript
运行
复制
export interface ClientState {
    client_name: IClient[]
}

export const clientInitialState: ClientState = {
    client_name: []
}

export const clientReducer = createReducer(
clientInitialState,
on(ClientActionTypes.addClientSuccess,(state, {client_name}) => ({
  ...state,
  client_name: [...client_name]
})

))

效果:

代码语言:javascript
运行
复制
addClient = createEffect(() => {
    return this.actions.pipe(
      ofType(ClientActionTypes.addClient),
      switchMap(({ client }) => {
        return this.clientService.addClient(client).pipe(
          map((res) => ClientActionTypes.addClientSuccess(res)),
          catchError(error => {
            return of(ClientActionTypes.addClientFailure({ error }))
          })
        );
      })
    );
  });

使用上面的代码,我试图将数组附加到client_name中,但我输入的值被分隔为数组中的多个值,我附加了关于它如何迭代的redux存储。

例如,如果我输入了test和test,它应该打印一个'test'," testing“。

EN

回答 1

Stack Overflow用户

发布于 2019-09-21 17:23:30

你做错了。

  1. 你的接口不应该扩展Array<IClient>。这是一个简单的字符串。

export interface IClient { client_name: string; }

  • your状态应包含有意义的名称:client_name**s**: IClient[]

export interface ClientState { client_names: IClient[] }

export const clientInitialState: ClientState = { client_names: [] }

  • your reducer应该是a。正确配置,以保证类型安全。b.您的client_name数组应包含在添加新客户端之前初始化的以前的客户端。使用扩展运算符。

还应正确配置export const clientReducer = createReducer( clientInitialState, on(ClientActionTypes.addClientSuccess,(state, action) => ({ ...state, client_names: [...state.client_names, action.client_name] })

  • your效果:

addClient$ = createEffect(() => { return this.actions.pipe( ofType(ClientActionTypes.addClient), switchMap((action) => { return this.clientService.addClient(action.client_name).pipe( map((res) => ClientActionTypes.addClientSuccess({ client_name: res})), catchError(error => { return of(ClientActionTypes.addClientFailure({ error })) }) ); }) ); });

我还没有测试过这段代码,所以如果有输入错误,请使用您的智能感知来修复。

  • 很抱歉在code上使用了代码块格式,因此由于某些原因,4个空格无法正常工作。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58038151

复制
相关文章

相似问题

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