zoukankan      html  css  js  c++  java
  • [NGXS] Select

    Problem:

    // counter.state.ts
    export interface CounterStateModel {
      counter: number;
    }
    
    @State<CounterStateModel>({
      name: 'counter',
      defaults: {
        counter: 0
      }
    })
    export class CounterState {}
    
    // counter.query.ts
    export class CounterQuery {
      @Selector([CounterQuery.getCounter])
      static getCounterCube(counter: number): number {
        return counter ** 3;
      }
    
      // Note: this selector being declared after its usage will cause an issue!!!
      @Selector([CounterState])
      static getCounter(state: CounterStateModel): number {
        return state.counter;
      }
    
      @Selector([CounterQuery.getCounter])
      static getCounterSquare(counter: number): number {
        return counter ** 2;
      }
    }

    Two ways to solve the problem:

    1. Change the order:

    export class CounterQuery {
      @Selector([CounterState])
      static getCounter(state: CounterStateModel): number {
        return state.counter;
      }
    
      @Selector([CounterQuery.getCounter])
      static getCounterCube(counter: number): number {
        return counter ** 3;
      }
    
      @Selector([CounterQuery.getCounter])
      static getCounterSquare(counter: number): number {
        return counter ** 2;
      }
    }

    2. Using createSelector:

    export class CounterQuery {
      static getCounterCube() {
        return createSelector(
          [CounterQuery.getCounter()],
          (counter: number) => counter ** 3
        );
      }
    
      static getCounter() {
        return createSelector(
          [CounterState],
          (state: CounterStateModel) => state.counter
        );
      }
    
      static getCounterSquare() {
        return createSelector(
          [CounterQuery.getCounter()],
          (counter: number) => counter ** 2
        );
      }
    }
  • 相关阅读:
    body标签相关
    前端基础
    26,进程
    网络编程基础socket 重要中:TCP/UDP/七层协议
    24,内置方法的应用,(实现单利模式)
    23,反射,内置方法。
    22,hashlib(md5,和,sha算法)logging日志模块
    21,钻石继承,多态,封装,几个装饰器函数
    20,序列化模块 json,pickle,shelve
    19,面向对象
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12202730.html
Copyright © 2011-2022 走看看