3.0.0 • Published 4 years ago
@classi/ngrx-extensions v3.0.0
ngrx-extensions
A set of utilities for NgRx family.
Features
@ngrx/storecreateFeatureStoreSelector()
Install
yarn add @classi/ngrx-extensionsAPIs
store createFeatureSlice()
Creates a feature Slice.
The returned Slice object has additional properties: select and initialState.
select method is the same to returned function by createFeatureStoreSelector.
See details in counter-slice.ts
// counter-slice.ts
import { createFeatureSlice, PayloadAction } from '@classi/ngrx-extensions';
export type State = {
count: number;
};
const initialState: State = {
count: 0,
};
export default createFeatureSlice({
name: 'counter',
initialState,
reducers: {
increment: () => ({ ...state, count: state.count + 1 }),
set: (state, action: PayloadAction<number>) => ({
...state,
count: action.payload,
}),
reset: () => ({ count: 0 }),
},
});import { Store } from '@ngrx/store';
import counterSlice from './counter-slice';
@Component({})
export class SomeComponent {
constructor(private readonly store: Store<{}>) {}
// Retrieve a scoped state from the store
readonly count$ = counterSlice.select(this.store, (state) => state.count);
increment() {
this.store.dispatch(counterSlice.actions.increment());
}
setCount(count: number) {
this.store.dispatch(counterSlice.actions.set(count));
}
reset() {
this.store.dispatch(counterSlice.actions.reset());
}
}store createFeatureStoreSelector()
See details in counter-store.ts
// counter-store.ts
export default function reducer(state: State, action: typeof actionsUnion) {
return _reducer(state, action);
}
export const featureName = 'counter';
export const select = createFeatureStoreSelector<State>(featureName);import { Store } from '@ngrx/store';
import * as counterStore from './counter-store';
@Component({})
export class SomeComponent {
constructor(private readonly store: Store<{}>) {}
// Retrieve a scoped state from the feature store
readonly count$ = counterStore.select(this.store, (state) => state.count);
}3.0.0-next.1
4 years ago
3.0.0
4 years ago
2.0.0-release-test.1
5 years ago
2.0.0
5 years ago
1.2.0
5 years ago
1.1.0
5 years ago
1.0.0
5 years ago