Guest User

Untitled

a guest
Dec 12th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. import { createSelector } from '@ngrx/store';
  2.  
  3. export interface State {
  4. evenNums: number[];
  5. oddNums: number[];
  6. }
  7.  
  8. export const selectSumEvenNums = createSelector(
  9. (state: State) => state.evenNums,
  10. evenNums => evenNums.reduce((prev, curr) => prev + curr)
  11. );
  12. export const selectSumOddNums = createSelector(
  13. (state: State) => state.oddNums,
  14. oddNums => oddNums.reduce((prev, curr) => prev + curr)
  15. );
  16.  
  17. export const selectTotal = createSelector(
  18. selectSumEvenNums,
  19. selectSumOddNums,
  20. (evenSum, oddSum) => evenSum + oddSum
  21. );
  22.  
  23. let state = {
  24. evenNums: [2, 4],
  25. oddNums: [1, 3],
  26. };
  27.  
  28. selectTotal(state); // (2+4)+(1+3)을 연산하여 10을 반환.
  29. selectTotal(state); // 모든 selector의 값이 cache에 저장된 값과 동일하므로 연산 수행을 하지 않음. 10을 반환.
  30.  
  31. state = { ...state, oddNums: [5, 7] };
  32.  
  33. // evenNums의 경우 selectSumEvenNums의 cache에 저장된 값과 동일하므로 연산 수행을 하지 않음.
  34. // 따라서 6+(5+7)을 연산하여 18을 반환
  35. selectTotal(state);
Add Comment
Please, Sign In to add comment