Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { createSelector } from '@ngrx/store';
- export interface State {
- evenNums: number[];
- oddNums: number[];
- }
- export const selectSumEvenNums = createSelector(
- (state: State) => state.evenNums,
- evenNums => evenNums.reduce((prev, curr) => prev + curr)
- );
- export const selectSumOddNums = createSelector(
- (state: State) => state.oddNums,
- oddNums => oddNums.reduce((prev, curr) => prev + curr)
- );
- export const selectTotal = createSelector(
- selectSumEvenNums,
- selectSumOddNums,
- (evenSum, oddSum) => evenSum + oddSum
- );
- let state = {
- evenNums: [2, 4],
- oddNums: [1, 3],
- };
- selectTotal(state); // (2+4)+(1+3)을 연산하여 10을 반환.
- selectTotal(state); // 모든 selector의 값이 cache에 저장된 값과 동일하므로 연산 수행을 하지 않음. 10을 반환.
- state = { ...state, oddNums: [5, 7] };
- // evenNums의 경우 selectSumEvenNums의 cache에 저장된 값과 동일하므로 연산 수행을 하지 않음.
- // 따라서 6+(5+7)을 연산하여 18을 반환
- selectTotal(state);
Add Comment
Please, Sign In to add comment