程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 NgRx 从选择商店中获取对象而不是列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 NgRx 从选择商店中获取对象而不是列表?

开发过程中遇到使用 NgRx 从选择商店中获取对象而不是列表的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 NgRx 从选择商店中获取对象而不是列表的解决方法建议,希望对你解决使用 NgRx 从选择商店中获取对象而不是列表有所启发或帮助;

我在从 store 中的 state 检索列表时遇到问题,因为该列表被一个对象环绕。

这是我的代码

beer-List.component.ts

@Component({
  SELEctor: 'app-beer-List',templateUrl: './beer-List.component.HTML',styleUrls: ['./beer-List.component.CSS']
})
export class BeerListComponent implements OnInit {
  public beers$: Observable<Beer[]>;
  
  constructor(private store: Store<BeerState>) {
  }

  ngOnInit(): voID {
    this.beers$ = this.store.SELEct((state: BeerStatE) => state.beers);
    this.store.dispatch(getBeersOnTap());
  }

beer.actions.ts

export const getBeersOnTap = createAction(
  '[Beer List] Get beers'
);
export const getBeersOnTapsuccess = createAction(
  '[Beer List] Get beers succeeded',props<{Beers: Beer[]}>()
);
export const getBeersOnTapFailed = createAction(
  '[Beer List] Get beers Failed'
);

beer.reducers.ts

export interface BeerState {
  beers: Beer[];
}

export const initialState: BeerState = {
  beers: []
};

export const beerReducer = createReducer(
  initialState,on(getBeersOnTapsuccess,(state,{Beers}) => ({...state,beers: beers}) // Payload comes from an effect
));

export function reducer(state: BeerState | undefined,action: Action) {
  return beerReducer(state,action);
}

我从商店里挑选啤酒得到了什么:

{
  beers: {
    beers: [
      ...

解决方法

beerReducer 可能已添加到 beers 功能中?所以你必须先选择啤酒状态。

   this.beers$ = this.store.SELEct((state: AppStatE) => state.beers.beers);
,

好的。我终于弄明白了。我需要调整我的状态树并添加一些选择器来从商店中选择啤酒。

这是我更新的 NgRx 代码,其中注释了更改:

beer-list.component.ts

@Component({
  SELEctor: 'app-beer-list',templateUrl: './beer-list.component.html',styleUrls: ['./beer-list.component.css']
})
export class BeerListComponent implements OnInit {
  public beers$: Observable<Beer[]>;
  
  constructor(private store: Store<AppState>) {
  }

  ngOnInit(): void {
    this.beers$ = this.store.SELEct(SELEctBeers); // Using SELEctor here
    this.store.dispatch(getBeersOnTap());
  }
}

app.state.ts(新文件)

export interface AppState {
  beerState: BeerState
}

beer.SELEctors.ts(新文件)

const SELEctBeerState = (state: AppStatE) => state.beerState;

export const SELEctBeers = createSELEctor(
    SELEctBeerState,(statE) => state.beers
)

大佬总结

以上是大佬教程为你收集整理的使用 NgRx 从选择商店中获取对象而不是列表全部内容,希望文章能够帮你解决使用 NgRx 从选择商店中获取对象而不是列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用